UWSCでopenfilesコマンドを使いファイルを開いているプロセスの情報を取得したいです。
コマンドプロンプトで以下のプログラムを実行すると、エラーメッセージが表示されます。
UWSC
1PRINT DOSCMD("openfiles /query /fo csv")
エラー: 対象となるシステムは 32 ビットの OS を実行している必要があります。
ビットを確認するためコマンドプロンプトで以下のコマンドを実行すると「AMD64」と表示され、UWSCでDOSCMD関数を使い同じコマンドを実行すると「x86」と表示されました。
cmd
1C:\Users\username>echo %PROCESSOR_ARCHITECTURE% 2AMD64
UWSC
1PRINT DOSCMD("echo %PROCESSOR_ARCHITECTURE%") 2x86
UWSCで実行されるコマンドプロンプトはパスが通っているものかと思い、コマンドプロンプトでwhereコマンドを使いどのcmd.exeにパスが通っているのか確認したところ、以下のように32bit版だけでした。
cmd
1C:\Users\username>where cmd.exe 2C:\Windows\System32\cmd.exe
そこで64bit版があるディレクトリのパスを通し優先順位を32bit版より上にして「%PROCESSOR_ARCHITECTURE%」を取得してみても変化なく、openfilesコマンドを実行しても結果は同じでした。
cmd
1C:\Users\username>where cmd.exe 2C:\Windows\SysWOW64\cmd.exe 3C:\Windows\System32\cmd.exe
そこでPowerShellでできないかと思ったのですが、こちらは結果を取得できないしエラーすら表示されませんでした。
UWSC
1PRINT POWERSHELL("openfiles /query /fo CSV")
コマンドプロンプト、PowerShellともUWSCを使わずに本体で実行した場合は結果が取得されます。
UWSCに管理者権限を付与して実行しても結果は同じでした。
UWSC
1DEF_DLL IsUserAnAdmin(): BOOLEAN: shell32.dll 2 3IFB IsUserAnAdmin() <> FALSE THEN 4 PRINT DOSCMD("openfiles /query /fo csv") 5ENDIF
これ以上できることは思いつかないのですが、UWSCでopenfilesコマンドを実行することは不可能でしょうか?
回答よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。