2012-02-29 2 views
7

VS에 "설치 프로젝트"가 있습니다. 설치하는 동안 다른 프로세스를 시작합니다.현재 사용자로 프로세스 실행

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
//fill StartInfo and run call Start() 
process.Start(); 

Windows 7에서 설치 프로그램을 실행하고 "Everyone"을 설치하는 경우 SYSTEM에서 프로세스가 시작됩니다. "Just for me"를 설치하면 Current user 아래에서 프로세스가 시작됩니다. 현재 사용자 아래에서 항상 프로세스를 시작하려면 어떻게해야합니까?

답변

4

매우 간단합니다. solution. 필요한 모든 것은이 링크에서 새로운 클래스를 만들고 텍스트를 복사하기 만하면됩니다.

내가 비슷한 문제가 있었다 프로세스 호출 ProcessAsUser.Launch("program name");

-1

ProcessStartInfo 클래스와 해당 속성 UserName을 사용하고 Process.Start 정적 메서드의 인수로 사용합니다.

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
Process.Start(startInfo); 
+0

이전에 시도했지만 다음 오류 메시지가 나타납니다. "스터드가 잘못된 데이터를 받았습니다." 이 문제를 해결하는 방법을 모르겠습니다. – kralex

+0

비밀번호는 무엇입니까? 이것 없이는 실 거예요 :) – John

0

를 시작하려면 : 내 설정 확장 (사용자 지정 작업)이 고도의 상자를 가져 관리자 권한을 필요로했다. "Just for Me"의 끝에서 응용 프로그램을 시작한 후 프로세스에는 관리자 컨텍스트에 대한 설정이있었습니다. 예를 들어 내 사용자 계정은 Windows 탐색기에서 파일 확장명을 모두 볼 수 있지만 관리자 계정은 파일을 숨기도록 구성되었습니다. 그래서 모든 파일 열기 상자에서 확장을 볼 수 없었습니다. 이 코드의 조각을 치료하기 위해 노력 :

ProcessStartInfo startInfo = new ProcessStartInfo(ShortcutTarget); 
startInfo.LoadUserProfile = true; 
startInfo.UseShellExecute = false; 
Process.Start(startInfo); 

그것은 관리자의 설정이 사용됩니다 "모두"에서, "그냥 나에게"모드에서만 작동합니다. 그러나 이것은 나에게 좋다.

관련 문제