'надлежащий' & надежный способ получить все установленные программы окон в Пайтоне?

Я видел многочисленные способы восстановить установленные программы на WinXP + у питона. Каков надлежащий и самый прочный способ сделать это?

В настоящее время я получаю доступ HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall и чтение каждого из ключей оттуда, чтобы получить список. (Мне сказали, что это не надлежащий способ сделать вещи), я видел примеры использования WMI/Win32com, чтобы сделать это также, но видел комментарии наряду с теми внедрениями, что WMI мог бы быть выключен на определенных машинах и что это не очень надежное решение.

Есть ли метод, который является и надлежащим, и надежным, чтобы получить список установленных программ? Ни один из примеров WMI, которые я видел, не работал над этой машиной (следовательно мое нежелание использовать его, я только управляю WinFLP; который является лишенным стихом XP.)

Я, кажется, также нашел статью TechNet, которую подняли мои поиски, который предоставлен подобному ответу по моему вопросу: Примечание к http://gallery.technet.microsoft.com/ScriptCenter/en-us/154dcae0-57a1-4c6e-8f9f-b215904485b7, что в Vista/7, перечисленной под Платформами очень ясно, говорится «Нет»..., не будет работать. Таким образом, соглашение о WMI кажется, что это - остановка...

Способность восстановить установленный путь была бы позитивным аспектом также, поскольку прямо сейчас мой текущий кодекс не составляет кого-то устанавливающего на другом двигателе, или в справочнике не по умолчанию.

11
задан ThantiK 16 January 2010 в 23:50
поделиться

1 ответ

То, что Python и PHP интерпретируются так же, как и другие, на самом деле не является точкой. Дело в том, что почти все API и языковые семантики, которые они раскрывают, сильно проверяются на ошибки, что делает невозможным использование неопределенного поведения. Даже если вы составите языки, это все равно будет невозможно. Это не означает, что вы не можете раскрыть небезопасные API, которые могут делать все, что угодно. Фактически с помощью модуля ctypes Pythons должна быть возможность создать подобное поведение, но значительно сложнее сделать это случайно.

-121--4196114-

Посмотрите на cpulimit . Он отправляет SIGSTOP и SIGCONT в соответствии с требованиями для поддержания уровня загрузки ЦП ниже заданного процента.

Тем не менее, WTF на «безумные жалобы и диковинные отзывы о том, что ваше программное обеспечение убивает производительность ПК». Я бы с большей вероятностью пожаловался, что ваше программное обеспечение было медленным и не наилучшим образом использовало мое оборудование, но я не ваш клиент.

Изменить: в Windows SuspendThread () и ResumeThread () могут привести к аналогичному поведению.

-121--3453570-

Текнетный сценарий, на который вы ссылаетесь, прекрасно работает под Win 7 (с Python 2.5 32bits), и я действительно не могу понять, почему он не должен.

На самом деле, реальная слабость подхода WMI заключается в том, что в нем перечислены только продукты, установленные с помощью установщика Windows. Так что это не даст вам полный список. Многие программы используют различные программы установки. Просто сравните результаты между (Выбрать * из Win32_Product) и тем, что отображается на панели управления. Таким образом, если вы не уверены, что программа, которая вмешивается в ваш список, установлена с MSI, WMI определенно не является ответом.

Так что это может быть не очень пифонично, но лучший способ, насколько я знаю, использовать реестр, как вы сделали. Именно так работает панель управления, поэтому, по крайней мере, Windows считает ее самым надежным способом.

8
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: