2012-02-17 3 views
0

이 질문은 이미 요청했지만 어떤 답변도 찾을 수 없다는 것을 알고 있습니다. 이 코드는 특정 사용자와 함께 응용 프로그램을 실행하려고하지만 파일이 있어도 파일을 찾을 수 없다는 오류를 표시합니다.다른 사용자가 앱을 실행할 수있는 방법

static void Main(string[] args) 
    { 
     System.Diagnostics.ProcessStartInfo myProcess = new System.Diagnostics.ProcessStartInfo("cinegy.exe"); 
     myProcess.WorkingDirectory =Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)+ "\\Cinegy\\Cinegy Workflow 8.5.8\\"; 
     System.Security.SecureString password = new System.Security.SecureString(); 

     string uspw = "mypass"; 

     foreach (char c in uspw) 
     { 
      password.AppendChar(c); 
     } 
     myProcess.UserName = "myuser"; 
     myProcess.Password = password; 
     myProcess.Domain = "mydomain"; 
     myProcess.UseShellExecute = false; 
     try 
     { 
      System.Diagnostics.Process.Start(myProcess); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
      Console.ReadLine(); 
     } 
    } 
} 

오류가 감사 | 지정된 파일을 찾을 수 없습니다 |

+0

정확한 오류를 게시 할 수 있습니까? – m0skit0

+0

그리고 새 사용자는 해당 폴더에서 읽기/실행 권한을 갖고 있습니까? – rene

+0

이 기사 확인 : http://stackoverflow.com/questions/559719/windows-impersonation-from-c-sharp – rkosegi

답변

2

당신이 사용하는 경우

UseShellExecute = false 

그것은 당신이 중 하나를 true로 인 UseShellExecute를 설정할 수 있습니다 WorkingDirectory

을 무시하고 cmd를 껍질을 가지고있다. 또는 실행중인 프로세스의 경로에 프로세스 위치를 추가하십시오.

string path = System.Environment.GetEnvironmentVariable("path"); 
path += ";" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + "\\Cinegy\\Cinegy Workflow 8.5.8\\"; 
System.Environment.SetEnvironmentVariable("path", path); 
관련 문제