0

vb.net アプリケーションから sysprep を実行しようとしています。パスとファイル名が正確であることが確認されていても、ファイルが見つからないというメッセージが返されます。process.start を使用して、新しいプロセスとして宣言し、ファイル名とは別のパスを宣言してみました。これが私が書いてほしいコードです。おそらく誰かがそれを試して、解決策を思いつくかどうかを確認できますか?

Private Sub btnsysp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsysp.Click
    Dim P As New System.Diagnostics.Process()
    P.StartInfo.UseShellExecute = True
    P.StartInfo.WorkingDirectory = "C:\Windows\System32\sysprep\"
    P.StartInfo.FileName = "sysprep.exe"
    P.Start()
End Sub
4

1 に答える 1

0

http://msdn.microsoft.com/en-us/library/aa384187.aspxにつまずいたと思います

%windir%\System32 ディレクトリは、64 ビット アプリケーション用に予約されています。ほとんどの DLL ファイル名は、DLL の 64 ビット バージョンが作成されたときに変更されていないため、32 ビット バージョンの DLL は別のディレクトリに保存されます。WOW64 は、ファイル システム リダイレクタを使用してこの違いを隠します。

何が起こるかというと、(32 ビット プロセスからの) 起動要求が にリダイレクトされ%windir%\SysWOW64\sysprep\sysprep.exeます。SysWOW64 にはこの特定の実行可能ファイルの 32 ビット バージョンがないため、起動に失敗します。

この問題を回避する最も簡単な方法は、あなたが持っているものでは%windir%\SysNative\sysprep\sysprep.exeなく参照を使用%windir%\System32\sysprep\sysprep.exeすることです。

于 2013-12-20T17:44:22.487 に答える