Windows 서비스 원격 설치
-
09-06-2019 - |
문제
여러 대의 컴퓨터에 원격으로 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()을 사용했습니다.
제휴하지 않습니다 StackOverflow