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 文件名在创建 64 位版本的 DLL 时没有改变,因此 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 回答