2009-10-04 4 views
0

관리자가 아닌 세션에서 실행할 때 HKLM에 액세스 할 수있는 프로그램을 만들어야합니다.Vista Win7의 가장 및 레지스트리 조작

  1. LogonUser
  2. ImpersonateLoggedOnUser
  3. RegOpenKeyEx
  4. RegCreateKeyEx
  5. : 그래서 가장은 Win32에서의 돼저 순서가 호출 될 것 같다 관리자 자격 증명에 액세스 할 수

XP/2003에서 키가 성공적으로 작성되었으며 Vista/Win7에서 '액세스가 거부되었습니다.'와 함께 실패합니다. 동일한 기본 도메인 사용자로 실행 중이며 각 시나리오에서 동일한 도메인 관리자로 가장합니다. '액세스가 거부되었습니다'는 RegCreateKeyEx에 의해 생성되고 분명히 키가 생성되지 않습니다.

누구에게 이런 일이 발생했는지 알 수 있습니까?

답변

0

머레이 (Murray)와 앤더스 (Anders)가 제안한 여러 프로세스를 통해이를 달성하는 방법이 있습니다. 먼저 Admin 자격 증명으로 CreateProcessAsLoggedOnUser를 사용하여 다른 프로세스를 시작하는 프로세스를 시작합니다. 그런 다음 "runas"가 동사로 지정된 ShellExecute 함수를 사용하여 다른 프로세스를 시작해야합니다. 이를 통해 UAC 대화 상자없이 가장 및 고도를 지정할 수 있습니다.

0

Vista/Win7에서는 보안이 변경되었습니다. 레지스트리 가상화에 대한 내용은 article을 참조하십시오.

+0

레지스트리 가상화에 대한 유용한 기사와 Microsoft가 새로운 응용 프로그램 개발을 위해 LUA 시나리오를지지하지만 관리자가 HKLM에 대한 액세스 권한을 여전히 보유하고 있지 않다는 것을 알고 있습니다. –

0

AFAIK에서 Vista/Windows7의 HKLM에 액세스하려면 관리자 권한이 있어야합니다. 옵션을 사용하여 프로그램을 컴파일하십시오 - 관리자 권한이 필요하거나 관리자 권한으로 프로그램을 실행하십시오. 당신이 관리 사용자의 사용자 이름/암호가있는 경우

1

, 당신은 CreateProcessWithLogonW()과 함께 도우미 프로세스를 시작하고 IPC의 어떤 종류 (파이프, 공유 메모리 + 이벤트 등) 이유를에 관해서는

를 사용하여 통신 할 수 NT6에서 실패합니다. 어쩌면 가장이 당신에게 a를주지 않을 수도 있습니다. high IL

1

Windows Vista/7의 관리자는 기본적으로 HKLM에 대한 쓰기 권한을 가지지 않습니다. 기존 프로세스를 승격 할 수 없으므로 새 프로세스 승격에 대한 자세한 내용은 Vista UAC: The Definitive Guide을 참조하십시오.

관련 문제