我試圖編寫一個perl腳本,該腳本通過使用query.exe(c:\ Windows \ system32 \ query.exe)來確定哪些用戶當前已登錄到Windows。 Perl是無法訪問該文件,無法執行它,甚至看不到它的存在,因爲我用下面的代碼中發現:使用Perl調用受保護的Windows 7可執行文件
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
函數檢查了執行腳本的用戶,並且它返回本地管理員組(特別是我)的成員的名稱。我也嘗試爲「Everyone」添加讀取/執行權限,但是當我嘗試修改此文件的權限時,Windows仍然給我提供訪問被拒絕的錯誤。最後,我嘗試以管理員身份運行perl.exe,但這也不能解決問題。
這是我可以通過更改Windows中的一些設置來解決?我需要添加一些東西到我的Perl腳本?還是有沒有辦法授予perl訪問這些進程的一些?
這並不是光顧,它真的很有幫助。你的設置是正確的,儘管system32位於我的路徑中,但查詢命令仍然無法訪問我的腳本。使用C:\ Windows \ sysnative完美工作。謝謝! – Jake
@Jake我回滾了你的更新。在64位機器上,system32是64位文件夾,而SySWOW64是32位文件夾。混淆我知道!在你的32位Perl進程中,system32實際上被重定向到SysWOW64,這就是爲什麼你需要sysnative來定位它。 –
@大衛赫夫曼男人,這也很有意義。再次感謝 :) – Jake