문제

여러 대의 컴퓨터에 원격으로 Windows 서비스를 설치해야 하므로 Winapi의 CreateService() 및 기타 서비스 기능을 사용합니다.액세스해야 하는 컴퓨터의 관리자 비밀번호와 사용자 이름을 알고 있습니다.원격 컴퓨터에 액세스하기 위해 다음과 같이 LogonUser의 도움으로 호출 프로세스를 가장합니다.

//all variables are initialized correctly  
int status = 0;        
status = LogonUser(lpwUsername,        
               lpwDomain,         
                   lpwPassword,          
                   LOGON32_LOGON_NEW_CREDENTIALS,       
                   LOGON32_PROVIDER_DEFAULT,   
                   &hToken);            


if (status == 0)    
{   
         //here comes a error  
}  

status = ImpersonateLoggedOnUser(hToken);     
if (status == 0)                
{     
    //once again a error     
}      

//ok, now we are impersonated, do all service work there

따라서 도메인의 컴퓨터에 액세스할 수 있지만 일부 컴퓨터는 도메인 외부에 있습니다.도메인 외부의 컴퓨터에서는 이 코드가 작동하지 않습니다.도메인 외부 컴퓨터의 서비스 관리자에 액세스할 수 있는 방법이 있나요?

도움이 되었습니까?

해결책

그렇게 할 수 있습니다. 계정은 원격 시스템에 있어야 하며 LogonUser 호출에서 도메인 이름에 대한 시스템 이름을 사용해야 합니다.

다른 팁

직접 롤링하는 대신 SC 내장 명령을 사용하는 것은 어떨까요?

좋아, 문제가 해결되었습니다(매우 좋지는 않지만 오히려 괜찮습니다).원격 컴퓨터에서 ipc$에 WNetAddConnection()을 사용했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top