C Как установить новый MachineGuid

#c #registry

#c #реестр

Вопрос:

Я использую этот код для изменения нового (перезаписывания) MachineGuid в реестре

HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptography

Но я не могу его изменить. Я могу изменить HwProfileGuid в

SYSTEM CurrentControlSetControlIDConfigDBHardware Profiles001

но не этот.

 HKEY hKey_;
LPCTSTR sk_MachineGuid = TEXT("SOFTWARE\Microsoft\Cryptography");
RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk_MachineGuid, 0, KEY_ALL_ACCESS, amp;hKey_);
LPCTSTR val_MachineGuid = TEXT("MachineGuid");
SetStringValue(hKey_, val_MachineGuid, w_MachineGuid /* generated MachineGuid */);
RegCloseKey(hKey_);
 

Кто-нибудь, кто может мне помочь, пожалуйста?

Комментарии:

1. Вы должны тестировать коды возврата для этих функций Windows API. Каждая из этих функций возвращает код возврата. Ссылка гласит: если функция завершается с ошибкой, возвращаемое значение является ненулевым кодом ошибки, определенным в Winerror.h . Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM, чтобы получить общее описание ошибки.

2. я сделал это, и я получил ERROR_SUCCESS. Таким образом, не было никаких проблем с установкой нового значения.. Но значение не было заменено.. Так странно @PaulMcKenzie

3. @0xM3G4 Вы случайно не говорите, является ли это 32-разрядной компиляцией, и вы не показываете val_MachineGuid , или SetStringValue .