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

时间:2011-02-22 23:21:47

标签: perl windows-7 permissions

我正在尝试编写一个perl脚本,使用query.exe(c:\ Windows \ system32 \ query.exe)确定当前哪些用户登录到Windows。 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

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

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

1 个答案:

答案 0 :(得分:8)

在我的64位机器上,我可以在query.exe(64位系统目录)中找到Windows\System32,但不能在Windows\SysWOW64(32位系统目录)中找到。{/ p>

我怀疑您运行的是64位Windows和32位Perl,因此,在WOW64仿真下,32位Perl进程会将system32重定向到SysWOW64

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

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