본문 바로가기
C#

C# Process.Start(string fileName) 이용 시에 0x80004005 발생 해결 방안 모색

by Hwoarang757 2023. 2. 28.

C# Process.Start(string fileName) 이용 시에 0x80004005 발생 해결 방안 모색

 

매개변수에 입력되는 fileName , 즉 File이 위치하는 Path에도 정상적인 파일이 존재하는데도 Process.Start를 이용하여 실행시에 0x80004005 발생 시에 해결 방안을 모색해보았습니다.

 

마찬가지로 0x80004005의 경우 

실행하는 프로젝트가 32bit 이며 , Process.Start로 실행하려는 파일은 64bit 프로세스 입니다. 

서로 다른 프로세스(?)로 인식하여 파일이 존재하지 않는 것 처럼 오류가 발생 하였습니다.

 

해결 방안에 대해서는 2가지 방법을 모색 하였습니다.... ( 더 좋은 방안이 많을 것 같습니다...  ) 

 

(1) 실행하는 프로젝트와 실행하려는 프로세스의 플랫폼을 일치 시키거나  ( any cpu 사용시에 32bit로 통일 시켰습니다. ) 

(2) 프로젝트 구조 , 의존성 , 특성 등으로 인하여 플랫폼을 변경하지 못할때 , 서로 플랫폼이 틀릴때는 실행하는 프로젝트의 Process 실행 시에 아래와 같이 UseShellExecute를 true로 설정 해주니 문제 없이 실행 되었습니다...

            using (Process ps = new Process())
            {
                ProcessStartInfo psi = new ProcessStartInfo("D:\\test.exe");
                psi.UseShellExecute = true;
                //psi.Verb = "open";
                //psi.CreateNoWindow = true;

                ps.StartInfo = psi;
                ps.Start();
                ps.WaitForExit();

                ps.Close();
            }