我正在尝试从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
答案 0 :(得分:0)
我认为你只是偶然发现了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
的引用。