Ничего не возвращается при использовании 32-битного Python os.popen в 64-битной системе Windows 7 - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь использовать следующие команды для запуска проверки шифрования битлокера в 64-битной системе Windows 7:

import os
os.popen('C:\Windows\System32\manage-bde.exe -status c:').read()

и он возвращает '' (ничего).

Я также пытался использовать подпроцесс. Открыть с теми же результатами.

Это 32-разрядная версия Python 2.6.6, работающая на 64-разрядной машине с Windows 7. Когда я использую 64-битную версию Python, оба os.popen и subprocess.Popen работают, но я не могу использовать 64-битный Python, так как у меня есть много 32-битных систем для поддержки и py2exe не будет поддерживать связывание на 64-битной платформе.

Кто-нибудь знает, могу ли я заставить subprocess.Popen или os.popen работать в 64-битной системе Windows с 32-битной версией Python? Я не уверен, где я иду не так.

С другой стороны, если кто-нибудь знает, как я могу проверить полное шифрование битлокера в системе Windows 7 без использования manage-bde.exe, я был бы признателен.

Ответы [ 3 ]

2 голосов
/ 01 марта 2011

manage-bde.exe находится в "реальном" каталоге System32.32-битные приложения автоматически перенаправляются в% windir% \ SysWOW64, когда они пытаются получить к нему доступ.Вы можете получить к нему доступ через SysNative псевдоним:

import os
os.popen(r'C:\Windows\SysNative\manage-bde.exe -status c:').read()
0 голосов
/ 03 марта 2017

Как уже указывалось, вы можете получить доступ к 64-битным приложениям из "настоящего" каталога System32 через псевдоним Sysnative (т.е.% windir% \ Sysnative). Но обратите внимание, что% windir% \ Sysnative определен только для 32-разрядных приложений и недопустим для 64-разрядных приложений: «64-разрядные приложения не могут использовать псевдоним Sysnative , поскольку это виртуальный каталог, а не реальный один "( ссылка ).

0 голосов
/ 20 марта 2011

Парсинг вывода команды manage-bde довольно хакерский. Выходной формат может легко измениться в будущих выпусках Windows, и ваш скрипт сломается.

Более чистой и удобной в обслуживании альтернативой будет использование поставщика WMI BitLocker, Win32_EncryptableVolume. В частности, метод GetProtectionStatus .

...