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

내가 방금 % \ System32 디렉터리에 64 비트 응용 프로그램에 대한 예약 된 http://msdn.microsoft.com/en-us/library/aa384187.aspx

은 % windir uppon 발견 생각합니다. 64 비트 버전의 DLL을 만들면 대부분의 DLL 파일 이름이 변경되지 않으므로 32 비트 버전의 DLL이 다른 디렉터리에 저장됩니다. WOW64는 파일 시스템 리디렉터를 사용하여이 차이를 숨 깁니다.

시작한 요청 (32 비트 프로세스에서)은 %windir%\SysWOW64\sysprep\sysprep.exe으로 리디렉션됩니다. SysWOW64에는이 특정 실행 파일의 32 비트 버전이 없기 때문에 실행이 실패합니다.

이 문제를 무시하는 가장 쉬운 방법은 %windir%\System32\sysprep\sysprep.exe 대신 사용자가 가지고있는 %windir%\SysNative\sysprep\sysprep.exe 대신에 참조를 사용하는 것입니다.

+0

감사합니다! 내가 sysnative 경로를 사용하고 그 일했습니다. 대단히 감사합니다. – user3120457

관련 문제