2013-06-24 3 views
0

이 코드액세스는 윈도우 7

int retVal = RegLoadKey(HKEY_LOCAL_MACHINE, "SAM_AUX", @"E:\Auxiliar Registry\SAM"); 
RegistryKey accountKeys = Registry.LocalMachine.OpenSubKey(@"SAM_AUX\SAM\Domains\Account\Users\Names", false); 

하지만 항상 거부 대한 액세스를받을를 사용하여 Windows 7에 SAM 하위 키를 읽고 싶어에 SAM 하위 키를 읽기 거부, 나는 regedit를 사용하여 SAM 하위 키를 볼 수 없습니다. 무엇이 문제 일 수 있습니까?

감사

답변

0

샘 레지스트리 키에 대한 권한은 일반 사용자 또는 관리자 그룹에 대한 액세스를 허용하지 않습니다. 프로세스를 로컬 시스템으로 실행할 수 있습니다 (예 : 시스템 서비스 또는 psexec 또는 작업 스케줄러를 사용하여). 또는 백업 및 복원 권한을 사용하여 보안을 우회 할 수 있습니다. 당신에 대한 백업 및 resotre 권한을 가능하게 이야기 할 때

+0

,이 코드 의미 : 'OpenProcessToken (TOKEN_ADJUST_PRIVILEGES, GetCurrentProcess()를 | TOKEN_QUERY, _myToken 아웃) (_restoreLuid 밖으로 널 (null), SE_RESTORE_NAME) LookupPrivilegeValue LookupPrivilegeValue (널 (null), SE_BACKUP_NAME , out _backupLuid)' C#으로 VS 2013을 사용하는 경우 어떻게 시스템 서비스를 만들거나 psexec을 사용할 수 있습니까? –

+0

음, 어딘가에서'AdjustTokenPrivileges'에 대한 호출이 있어야합니다. 그렇습니다. 리턴 값이 0이 아닌 경우에도'AdjustTokenPrivileges' 다음에'GetLastError()'를 체크하여'ERROR_NOT_ALL_ASSIGNED'를 받았는지 확인하십시오. 백업/복원 권한을 사용하려고 시도하지만 실제로 응용 프로그램을 보관하지 않은 경우 (예 : 응용 프로그램이 상승 된 상태가 아닌 경우)에 발생합니다. 서비스를 작성하기위한 C# 클래스 집합이 있습니다.하지만 저는 그들에게 익숙하지 않습니다. 'psexec '를 사용하는 가장 간단한 방법은 최종 사용자가 프로그램을 실행하기 위해 그것을 사용하게하는 것이지만, 이것을 서브 프로세스로 실행할 수도 있습니다. –

+0

확인. 나는 그것을했고, 나는 ERROR_NOT_ALL_ASSIGNED를 가지고 있지 않다. 나는 그런 경우에 오류가 없다. 서비스를 작성하기 위해 C# 클래스를 읽을 것입니다. 아마도 제 문제에 도움이 될 것입니다. 어쨌든 고마워. –