Вызов защищенного исполняемого файла Windows 7 с помощью Perl - PullRequest
3 голосов
/ 23 февраля 2011

Я пытаюсь написать Perl-скрипт, который определяет, какие пользователи в настоящее время вошли в Windows с помощью query.exe (c: \ Windows \ system32 \ query.exe). Perl не может получить доступ к этому файлу, не может выполнить его, даже не может увидеть, что он существует, как я обнаружил с помощью следующего кода:

print `dir c:\\windows\\system32\\query*`;

Это дает следующий вывод:

07/13/2009  05:16 PM         1,363,456 Query.dll
1 File(s)      1,363,456 bytes
0 Dir(s)  183,987,658,752 bytes free

Я проверил пользователя, выполняющего сценарий с помощью функции getlogin perl, и он возвращает имя члена локальной группы администраторов (в частности, меня). Я также попытался добавить разрешения на чтение / выполнение для «Все», но Windows продолжает выдавать мне ошибки об отказе в доступе, когда я пытаюсь изменить разрешения этого файла. Наконец, я попытался запустить perl.exe от имени администратора, но это тоже не решило проблему.

Это то, что я могу решить, изменив некоторые настройки в Windows? Нужно ли что-то добавить в мой Perl-скрипт? Или просто нет возможности предоставить Perl доступ к некоторым из этих процессов?

1 Ответ

8 голосов
/ 23 февраля 2011

На моей 64-битной машине я могу найти query.exe в Windows\System32 (64-битный системный каталог), но не в Windows\SysWOW64 (32-битный системный каталог).

Я подозреваю, что вы используете 64-битную Windows и 32-битный Perl и, следовательно, под эмуляцией WOW64 32-битный процесс Perl перенаправляет system32 в SysWOW64.

Поскольку system32 должен быть на вашем пути, вы должны иметь возможность выполнить его, выполнив query.exe без какого-либо пути. Если вам абсолютно необходимо обратиться к 64-битной системной папке, вы можете сделать это из 32-битного процесса с помощью C:\Windows\sysnative.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...