UWSCでファイルを開いているプロセスの情報を取得したい

UWSCでopenfilesコマンドを使いファイルを開いているプロセスの情報を取得したいです。

コマンドプロンプトで以下のプログラムを実行すると、エラーメッセージが表示されます。

UWSC

PRINT DOSCMD("openfiles /query /fo csv")

エラー: 対象となるシステムは 32 ビットの OS を実行している必要があります。

ビットを確認するためコマンドプロンプトで以下のコマンドを実行すると「AMD64」と表示され、UWSCでDOSCMD関数を使い同じコマンドを実行すると「x86」と表示されました。

C:\Users\username>echo %PROCESSOR_ARCHITECTURE% AMD64

UWSC

PRINT DOSCMD("echo %PROCESSOR_ARCHITECTURE%") x86

UWSCで実行されるコマンドプロンプトはパスが通っているものかと思い、コマンドプロンプトでwhereコマンドを使いどのcmd.exeにパスが通っているのか確認したところ、以下のように32bit版だけでした。

C:\Users\username>where cmd.exe C:\Windows\System32\cmd.exe

そこで64bit版があるディレクトリのパスを通し優先順位を32bit版より上にして「%PROCESSOR_ARCHITECTURE%」を取得してみても変化なく、openfilesコマンドを実行しても結果は同じでした。

C:\Users\username>where cmd.exe C:\Windows\SysWOW64\cmd.exe C:\Windows\System32\cmd.exe

そこでPowerShellでできないかと思ったのですが、こちらは結果を取得できないしエラーすら表示されませんでした。

UWSC

PRINT POWERSHELL("openfiles /query /fo CSV")

コマンドプロンプト、PowerShellともUWSCを使わずに本体で実行した場合は結果が取得されます。

UWSCに管理者権限を付与して実行しても結果は同じでした。

UWSC

DEF_DLL IsUserAnAdmin(): BOOLEAN: shell32.dll IFB IsUserAnAdmin() <> FALSE THEN PRINT DOSCMD("openfiles /query /fo csv") ENDIF

これ以上できることは思いつかないのですが、UWSCでopenfilesコマンドを実行することは不可能でしょうか?

回答よろしくお願いいたします。

コメントを投稿

0 コメント