2013-11-04 3 views
2

나는 관련된 모든 Process.Start 명의 도용 질문을 읽었습니다. 적어도 Google을 통해 찾을 수는 있지만이 상황과 일치하는 항목을 찾지 못했습니다 (및 90 % are re : ASP는 완전히 다른 야구 게임입니다.비 도메인 PC에서 도메인 사용자의 명의 도용

시나리오 : 현재 사용자의 자격 증명을 사용하여 AD를 쿼리하고 검색과 일치하는 서버 목록을 얻은 다음 SMB를 통해 이들에 연결하는 작은 도구가 있습니다. 주식 목록을 얻으십시오.

도메인 사용자의 자격 증명을 사용하여 도메인에없는 컴퓨터에서이 프로세스를 실행할 수 있도록 요청되었습니다.

인증에 대한 프롬프트를 표시하는 스위치를 추가 한 다음 적절한 자격 증명 (runas /netonly ...을 저장하기 위해)을 사용하여 동일한 실행 파일을 Process.Start()에 추가했습니다.

이것은 두 가지 문제점을 제공합니다. 내가, 내가 누구를 가장 할 수 있습니다 (도메인에) 내 컴퓨터에서 코드를 실행하면 내가 함께 테스트하고있어 코드는 ... 아래

Dim ProcInfo As New ProcessStartInfo With { 
     .Domain = dlgImpersonate.Domain, 
     .UserName = dlgImpersonate.Username, 
     .Password = dlgImpersonate.Password, 
     .FileName = Reflection.Assembly.GetEntryAssembly.Location, 
     .UseShellExecute = False} 

Try 
    Process.Start(ProcInfo) 
    ShouldEnd = True 
Catch ex As Exception 
    'HandleException(ex) 
    MessageBox.Show(ex.Message, "Impersonation failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 
End Try 

그래서입니다. AD를 쿼리하는 것에는 몇 가지 단점이 있지만 다른 문제입니다. 내가 (안 도메인에) 새로운 시스템에서 코드를 실행하면

내가 얻을 : 컴퓨터가 도메인 단순히 몰랐다 또는 얼마나 그때 그렇게 대해 인증 할 경우

Win32Exception: Logon failure: unknown user name or bad password 
Stack: 
    at Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
    at Process.Start(ProcessStartInfo startInfo) 
    ...My code 

내가 궁금 명령 프롬프트에서 시도했습니다 ...

runas /netonly /user:MyDomain\MyUser Test.exe 

그리고이 작동합니다.

그래서 ... Process.Start이 예상대로 인증되지 않는 이유를 어떻게 추적합니까?

NB : 자격 증명이 올바른지 - 난 메모장에서 온 전성 검사

답변

1

체크 아웃이 링크를 복사/붙여 넣기에 의지했습니다 http://codebetter.com/jameskovacs/2009/10/12/tip-how-to-run-programs-as-a-domain-user-from-a-non-domain-computer/

는 기본적으로, 당신은/netonly과에서 runas를 사용합니다. 그러나 수동으로 암호를 입력해야합니다./savecred를 사용하여 cred를 캐시 할 수 있습니다.

+0

대단히 감사합니다. 내가 원한 것에 매우 가깝습니다. 분명히, 나는 콘솔을 보여줄 필요가없는 것을 선호 하겠지만, 나는 그걸 해결할 수 있을지도 모른다. – Basic