我正在尝试编写一个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对这些进程的访问权限?
答案 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上做一些阅读,因为它可能会让你感到困惑,直到你掌握它为止。另一方面,如果你已经知道了所有这些,我为光顾而道歉。