私は、現在query.exe(c:\ Windows \ system32 \ query.exe)を使用してWindowsにログインしているユーザーを特定するperlスクリプトを作成しようとしています。Perlで保護されたWindows 7実行ファイルを呼び出す
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
:
print `dir c:\\windows\\system32\\query*`;
これは次の出力を生成します。私は次のコードで見つけたとしてPerlは、それが存在していることを見ることさえできない、それを実行することができない、このファイルにアクセスすることができません
私は、perlのgetlogin
関数を使ってスクリプトを実行しているユーザーをチェックし、ローカルのAdministratorsグループのメンバー(具体的には私)の名前を返します。また、 "Everyone"の読み取り/実行権限を追加しようとしましたが、Windowsはこのファイルのアクセス権を変更しようとするとアクセス拒否エラーを表示し続けます。最後に、私は管理者としてperl.exeを実行しようとしましたが、それでも問題は解決されません。
Windowsの設定を変更して解決できるのですか?私はperlスクリプトに何かを追加する必要がありますか?あるいは、これらのプロセスのいくつかにperlアクセスを許可する方法はありませんか?
これはまったく元気ではなかったので、本当に役に立ちました。あなたは私のセットアップについて正しいですが、system32は私のパスにありますが、クエリコマンドはまだ私のスクリプトにアクセスできませんでした。 C:\ Windows \ sysnativeを使用すると完全に動作しました。ありがとう! – Jake
@Jakeアップデートをロールバックしました。 64ビットマシンでは、system32は64ビットのフォルダ、SySWOW64は32ビットのフォルダです。私は分かりません!あなたの32ビットPerlプロセスでは、system32は実際にSysWOW64にリダイレクトされます。なぜなら、sysnativeを探す必要がある理由です。 –
@ David-Heffernan Man、それはあまりにも意味があります。再度、感謝します :) – Jake