使用Process.Start()时出错

用户名

我正在尝试从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
SomeNickName

我认为您只是偶然发现了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位版本,因此启动失败。

绕过此问题的最简单方法是使用reference%windir%\SysNative\sysprep\sysprep.exe而不是%windir%\System32\sysprep\sysprep.exe您所拥有的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章