2012-02-15 3 views
4

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에서 실행 중입니다.

+3

이것은 힌트를 줄 수 있습니다. http://stackoverflow.com/questions/5098121/how-can-i-get-elevated-permissions-uac-via-impersonation-under-a-non-interacti –

+0

나는 이것을 할 수 있다고 생각하지 않는다. 가장 토큰을 사용하여 별도의 프로세스를 시작해야 할 수도 있습니다. – Luke

+0

@ 루크 새로운 프로세스를 시작하는 것은 괜찮지 만'CreateProcessAsUser'를 사용하여이를 수행하는 방법을 알 수 없습니다. 어떤 아이디어? – shoosh

답변

1

작업 스케줄러를 사용하여 UAC 프롬프트를 무시할 수 있다고 생각합니다. 여기에 일련의 지침이 있습니다. http://www.vikitech.com/253/create-shortcuts-for-trusted-programs-to-bypass-windows-7-uac-check

그것은 약간의 작업이지만 확실하게 코드를 통해 수행 할 수 있습니다.

+0

예약 된 작업을 만들려면 전체 관리 권한이 필요합니다. 이것은 "at"명령으로 수행 할 수 있습니다. UAC에서 호출하면 "Access denied"가 반환됩니다. – shoosh

2

일반적으로 UAC를 우회 할 때 권장되는 솔루션은 서비스를 작성하는 것입니다. 이 서비스는 모든 권한으로 실행되며 응용 프로그램이 작업을 수행하도록 요청합니다.

+0

서비스를 설치하려면 UAC를 통과해야하므로 닭고기와 달걀이 있습니다. – shoosh

+0

@shoosh 응용 프로그램을 처음 설치할 때 UAC를 피하려고합니까? 또는 앱이 이미 설치되어 있습니까? –

+1

요점은 서비스 *를 한 번만 설치하고 매번 응용 프로그램의 프로세스를 향상시키지 않아도된다는 것입니다. Serge가 말했듯이, UAC가 사소하게 패배 할 수 있다면, 그것은 무의미 할 것입니다. –

4

이 사용자 또는 해당 사용자에 로그인하여 아무데도 가지 않을 것입니다. 문제는 사용자가 아니라 관리자 권한을 묻는 컨텍스트입니다. 관리자조차도 UAC 프롬프트를 확인해야합니다.

당신이 물어 본 것이 가능하다면 UAC 개념을 완전히 상실 할 것입니다. 세션이 대화식 인 한 (그리고 Win7에서 프로그램은 서비스 애플릿과 같은 Windows 단축키에서 제공되지 않음) 프롬프트를 무시할 수 없습니다.

다른 말처럼 일반적인 솔루션은 서비스를 작성하고 대화 형 응용 프로그램에 명명 된 파이프와 같은 표준 IPC 메커니즘을 사용하여 서비스와 대화하게하는 것입니다. IPC 개체를 생성 할 때 필요한 보안 설명자를주의하십시오. 사용자 컨텍스트는 서비스와 대화 형 응용 프로그램에서 서로 다릅니다.

1

문제는 사용자가 가장 수준 (SecurityImpersonation 변수)의 값을 잘못 지정했기 때문입니다. "마법의 숫자"여야합니다.