Я использую интерфейс IGroupPolicyObject, чтобы открыть раздел реестра. Я загрузил реестр с помощью GPO_SECTION_MACHINE, но когда я открываю раздел реестра «SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ SeCEdit \ Reg Values» с помощью RegOpenKeyEx, возвращается код ошибки 2. Я запускаю свой exe (встроенный в Visual Studio 2008, c ++) в качестве администратора. Я хотел бы знать, как открыть вышеупомянутый ключ? Любая форма помощи будет принята с благодарностью.
Ниже приведен код, который я использую для открытия ключа.
GUID RegistryId = REGISTRY_EXTENSION_GUID;
GUID ThisAdminToolGuid =
{
0x0F6B957E,
0x509E,
0x11D1,
{0xA7, 0xCC, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xE3}
};
hres = CoCreateInstance(
CLSID_GroupPolicyObject,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGroupPolicyObject,
(LPVOID*)&pIGroupPolicyObject
);
if (S_OK != hres || NULL == pIGroupPolicyObject)
{
_tprintf(_T("\n hres != S_OK"));
return FALSE;
}
hres = pIGroupPolicyObject->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);
if (FAILED(hres))
{
_tprintf(_T("\n hres != S_OK"));
return FALSE;
}
hres = pIGroupPolicyObject->GetRegistryKey(GPO_SECTION_MACHINE, &hGPOSectionUserKey);
if (FAILED(hres) || NULL == hGPOSectionUserKey)
{
_tprintf(_T("\n hres != S_OK"));
return FALSE;
}
lRetVal = RegOpenKeyEx(hGPOSectionUserKey, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SeCEdit\\Reg Values\\MACHINE/System/CurrentControlSet/Services/LanManServer/Parameters/NullSessionShares"), 0, KEY_READ, &hSettingUserKey);
Призыв к RegOpenKeyEx
возвращает 2, что ERROR_FILE_NOT_FOUND
, Это означает, что путь, который вы указываете, не существует. Что правильно. Вы поставили: "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SeCEdit\\Reg Values\\MACHINE/System/CurrentControlSet/Services/LanManServer/Parameters/NullSessionShares"
,
Наверняка этот путь не существует. Вместо этого вы должны передать: "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SeCEdit\\Reg Values"
,