0

錯誤我想從vb.net應用程序運行sysprep,並且即使路徑和文件名已被確認爲準確,但它返回的是它找不到該文件。我試過使用process.start,聲明爲一個新進程,聲明與文件名分開的路徑。這裏是我希望寫的代碼,也許有人可以嘗試一下,看看他們是否提出瞭解決方案?使用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 
+1

權限問題?如果您將所有內容都移出C:\ WINDOWS \ SYSTEM32? – Steve

+0

將項目上的目標CPU設置更改爲AnyCPU,以免重定向到c:\ windows \ syswow64。其中沒有sysprep.exe –

回答

0

我覺得你只是偶然uppon的http://msdn.microsoft.com/en-us/library/aa384187.aspx

在%WINDIR%\ System32目錄中保留爲64位應用程序。當創建64位版本的DLL時,大多數DLL文件名不會發生更改,因此32位版本的DLL存儲在>不同的目錄中。 WOW64通過使用文件系統重定向器來隱藏這種差異。

會發生什麼情況是您的啓動請求(來自32位進程)正被重定向到%windir%\SysWOW64\sysprep\sysprep.exe。由於SysWOW64上沒有此特定可執行文件的32位版本,因此啓動失敗。

繞過此問題的最簡單方法是使用參考%windir%\SysNative\sysprep\sysprep.exe而不是%windir%\System32\sysprep\sysprep.exe這就是你所擁有的。

+0

謝謝!我使用了sysnative路徑,並且工作。感謝很好的解釋。 – user3120457