2014-09-28 4 views
2

다른 사용자 (서비스 사용자는 아님)를 사용하여 C# 서비스에서 System.Diagnostics.Process으로 djoin.exe 도구를 실행하려고합니다.C# 프로세스를 다른 사용자로 실행하지 못했습니다.

코드 -1073741502을 반환합니다. 경우에

은 내가 볼 수있는 로그 :

응용 프로그램 팝업 : djoin.exe - 응용 프로그램 오류 : 응용 프로그램이 제대로 (0xc0000142)를 시작 수 없습니다. 확인을 클릭하여 응용 프로그램을 닫습니다.

표준 오류 또는 표준 출력이 없습니다. 여기

내가 사용되는 프로세스의 구성입니다 :

ProcessStartInfo startInfo = new ProcessStartInfo 
{ 
    Arguments = "/Provision /Domain domain.com /Machine PC12 /SaveFile NUL /printblob", 
    WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), 
    FileName = "djoin.exe" 
    UseShellExecute = false, 
    RedirectStandardError = true, 
    RedirectStandardInput = true, 
    RedirectStandardOutput = true, 
    CreateNoWindow =true, 
    Domain = "domain.com", 
    UserName = "other-user", 
    Password = "***" 
}; 

if (username!=null) 
{ 
    startInfo.Domain = domain; 
    startInfo.UserName = username; 
    startInfo.Password = ToSecureString(password); 
} 

p = new Process { StartInfo = startInfo }; 
p.Start(); 

RUNAS 명령을 사용하여, 모든 것이 잘 작동합니다.

무엇이 문제입니까?

+0

어떤 Windows 버전입니까? 그리고 앱에 높은 권한이 있습니까? –

+0

Windows 2008 서버 R2. 그것은 하나의 서비스입니다. 승진 특권이란 무엇을 의미합니까? – Igal

+0

해당 프로그램에서 사용하는 DLL 중 하나의 DllMain() 진입 점은 FALSE를 반환했습니다. 불행한 점은 응용 프로그램 이벤트 로그에 메시지를 남기지 않는 한 이유를 알 수 없다는 것입니다. 좋지 않은 확률은 찾을 수 있습니다. LoadUserProfile을 * true *로 설정해야하지만 꼭 조정할 수있는 노브가 충분하지 않습니다. 도움을 받으려면 앱 작성자 또는 소유자에게 문의하십시오. –

답변

0

권한 문제인 것처럼 보입니다. 이것은 exe가 위치한 폴더 레벨이거나 프로세스가 실행중인 사용자와 관련이 있습니다.

이 문제를 진단하려면 먼저 exe가있는 폴더로 이동하십시오. 그런 다음 권한을 마우스 오른쪽 버튼으로 클릭하여 "모든 사람"에게 권한을 설정하십시오. 그런 다음 다시 실행하여 동일한 메시지가 표시되는지 확인하십시오.

또한 Visual Studio를 실행할 때 시작 부분에서 마우스 오른쪽 버튼을 클릭하고 관리자 권한으로 실행하십시오. 나는 당신의 의견을 바탕으로이 작업이 정상적으로 작동한다는 것을 알았습니다. 예 : 같은 도메인에있는 다른 사용자입니까? 응용 프로그램이있는 폴더의 권한을 확인한 후에는 해당 폴더에 대한 권한이있는 계정을 만든 다음 해당 계정에서 실행할 exe를 어떤 일정이나 일정으로 실행할지 결정해야합니다.

업데이트 - 위의 주석은 system.diagnostics를 사용하여 코드의 각 지점에서 eventlog 항목을 작성하여 잘못된 내용을 파악하는 데 도움이 될 수 있습니다. WinDBG가 예외를 던지고있는 것에 대한 자세한 정보를 얻으려면 사용할 수있는 또 다른 도구.