|
관리자 권한이 필요한 문제는 TRegistry 생성자에 KEY_READ를 넘겨주면 되긴 하는데요.
말씀하신 코드 대로 실제로 실행해보니, 해당 레지스트리 키가 윈도우 OS에 의해 보호되어(protected) 있는 것 같습니다.
특정 레지스트리 키들은 애플리케이션이 접근할 수 없도록 보호되어 있는데요.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform
이 키까지는 프로그램 코드로 접근이 되는데, Plugins부터 접근이 안되는군요. Plugins와 동일 레벨의 다른 키들도 접근이 되는데, Plugins 키만 접근이 막혀있는 것 같습니다. 관리자 권한으로 접근해도 마찬가지네요.
압9정 님이 쓰신 글 :
: 답변 감사합니다.ㅎ
:
: 권한 문제에 대한 것은 잘 몰랐었는데 새로운걸 배웠네요.^^
:
: 근데 관리자 권한으로 실행해도 안되는건 뭘까요...
:
: 그냥 NULL값이 나옵니다.ㅠ
:
: 제 컴퓨터는 Window7 입니다.
:
: Documents\RAD Studio\Projects\Debug 이 경로에 있는 exe 파일 실행하는게 맞나요??
:
: 박지훈.임프 님이 쓰신 글 :
: : 권한이 모자라서 그런 것 같군요. 스크린샷을 보니 윈도우7 혹은 비스타인데요.
: : 윈도우 비스타 이상에서는 레지스트리의 HKEY_LOCAL_MACHINE 하위 키는 관리자권한으로 승격하지 않으면 읽을 수 없습니다.
: : 확인해보시려면, 컴파일하신 프로그램 exe를 탐색기에서 오른쪽 클릭해서 "관리자 권한으로 실행"을 선택해서 실행시켜보세요.
: :
: :
: :
: : 압9정 님이 쓰신 글 :
: : : 안녕하세요.
: : :
: : : 제가 Regedit에서 위와 그림에 있는 경로에 ModuleId 라는 값을 가져오려고 합니다.
: : :
: : : 포럼에서 QA를 참고하여 소스를 짜봤는데요. 값이 안넘어 오네요.ㄷ
: : :
: : : #include <Registry.hpp>
: : :
: : : void TMain::GetBiosRegistry()
: : : {
: : : TRegistry *reg = new TRegistry();
: : : String Str;
: : :
: : : reg->RootKey = HKEY_LOCAL_MACHINE;
: : : reg->OpenKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform\\Plugins\\Objects\\msft:rm/algorithm/bios/4.0",false);
: : : Str = reg->ReadString("ModuleId");
: : : Memo1->Lines->Add(Str);
: : :
: : : reg->CloseKey();
: : : delete reg;
: : : }
: : : //---------------------------------------------------------------------------
: : : void __fastcall TMain::Button1Click(TObject *Sender)
: : : {
: : : GetBiosRegistry();
: : : }
: : : //---------------------------------------------------------------------------
: : :
: : : 어디가 잘못된 건가요?ㅠ
|