UAC 팝업이 나타나지 않고 스레드 또는 프로세스의 실행 권한을 높이는 방법을 찾고 있습니다. 프로세스를 실행하는 사용자는 관리 사용자이며 사용자 이름과 암호를 사용할 수 있습니다.Win32 : 사용자/암호를 사용하여 UAC를 우회
서비스를 다시 시작하고 시스템 디렉토리에 파일을 쓰는 것과 같은 관리 작업을 수행하려면이 작업을 수행해야합니다. 내 응용 프로그램은 원격으로 실행되며 UAC 대화 상자를 확인하는 대화 형 사용자는 없습니다. UAC를 비활성화하는 것은 옵션이 아닙니다.
나는 더 나은 일부 또는 이틀 동안 저글링 LogonUser()
, ImpersonateLoggedOnUser()
, CreateProcessAsUser()
및 DuplicateTokenEx()
시도했지만이 모든에 적절한 조합하면 알아낼 수도 가능하다. 어느 필요한 가장 수준이 제공되지 않았 "
HANDLE token = 0;
LogonUserA(user, NULL, pass, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, &token);
HANDLE impToken = 0;
DuplicateToken(token, SecurityImpersonation, &impToken);
ImpersonateLoggedOnUser(impToken);
CreateFileA("C:\\windows\\blabla.dll", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
마지막 통화 = 1346 GetLastError()
실패, 또는 제공된 가장 수준이 올바르지 않습니다 :
는 특히 내가 해봤 것은 이것이다. "
내가 뭘 잘못하고 있니?
참고 - 이것은 Win2008 R2에서 실행 중입니다.
이것은 힌트를 줄 수 있습니다. http://stackoverflow.com/questions/5098121/how-can-i-get-elevated-permissions-uac-via-impersonation-under-a-non-interacti –
나는 이것을 할 수 있다고 생각하지 않는다. 가장 토큰을 사용하여 별도의 프로세스를 시작해야 할 수도 있습니다. – Luke
@ 루크 새로운 프로세스를 시작하는 것은 괜찮지 만'CreateProcessAsUser'를 사용하여이를 수행하는 방법을 알 수 없습니다. 어떤 아이디어? – shoosh