2

VBScript では、このWScript.Shell.Runメソッドには3 つの引数があり、その 3 番目の引数は、処理を続行する前にプログラムが新しく生成されたプロセスの終了を待機する必要があるかどうかを指定するブール値です。

この動作をmstsc.exe(Windows のリモート デスクトップ接続プログラム) で正しく動作させるのに問題があります。

以下のファイルを として保存してtest.vbs実行するとcscript test.vbs、期待どおりに動作します。

Set obj = CreateObject("WScript.Shell")
Call obj.Run("notepad.exe", 1, true)
MsgBox "You just closed notepad."
Call obj.Run("mstsc.exe", 1, true)
MsgBox "Remote desktop just closed."

しかし、HTA ファイルから同じコードを実行しようとすると、正しく動作せず、実行後のメッセージ ボックスmstsc.exeが待機せずにすぐに表示されます。

<html>
<head>
<script language="VBScript">
Sub RunProgram
  Set obj = CreateObject("WScript.Shell")
  Call obj.Run("notepad.exe", 1, true)
  MsgBox "You just closed notepad."
  Call obj.Run("mstsc.exe", 1, true)
  MsgBox "Remote desktop is still open!"
End Sub
</script>
</head>
</body>
<body onload=RunProgram>
</html>

なぜこれが起こるのか、それを修正する方法はありますか?

編集: Windows 10 および 7 でこれをテストしました。

4

1 に答える 1

4

mstsc の 64 ビット バージョンを使用します。c:\windows\sysnative\mstsc.exe Sysnative32 ビット プログラムがSystem32ディレクトリにアクセスできるようにします。アクセスしようとしている 32 ビット プログラムC:\windows\system32は にリダイレクトされc:\windows\syswow64ます。

私の最初のコメントから。

Windows 10でも同じことが起こります。HTAが32ビットとして実行するように設定されていることが関係していると思われますが、mstscを32ビットバージョンに変更しても違いはありませんでした

于 2016-07-23T00:32:52.487 に答える