使用Perl调用受保护的Windows 7可执行文件

Jak*_*ake 3 permissions perl windows-7

我正在尝试编写一个perl脚本,通过使用query.exe(c:\ Windows\system32\query.exe)确定当前登录到Windows的用户.Perl无法访问此文件,无法执行它,甚至无法查看它是否存在,正如我在以下代码中找到的那样:

print `dir c:\\windows\\system32\\query*`;
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

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
Run Code Online (Sandbox Code Playgroud)

我已经使用perl getlogin函数检查了执行脚本的用户,并返回本地Administrators组成员的名称(特别是我).我也尝试为"Everyone"添加读取/执行权限,但是当我尝试修改此文件的权限时,Windows会继续向我提供访问被拒绝的错误.最后,我尝试以管理员身份运行perl.exe,但这也无法解决问题.

这是我可以通过更改Windows中的某些设置来解决的问题吗?我是否需要在perl脚本中添加一些内容?或者是否没有办法授予perl对这些进程的访问权限?

Dav*_*nan 8

在我的64位机器,我能找到query.exeWindows\System32(64位系统目录),但不是在Windows\SysWOW64(32位系统目录).

我怀疑你运行64位Windows和32位Perl,因此,在WOW64仿真下,32位Perl进程重定向system32SysWOW64.

既然system32应该在你的路径中,你应该能够通过query.exe无任何路径执行来执行它.如果您必须参考64位系统文件夹,那么您可以使用32位进程执行此操作C:\Windows\sysnative.

如果我的怀疑是正确的,我建议你在WOW64上做一些阅读,因为它可能会让你感到困惑,直到你掌握它为止.另一方面,如果你已经知道了所有这些,我为光顾而道歉.