Windows のデフォルト ユーザーのレジストリ ハイブを開こうとしています。「パラメーターが無効です」というエラーが表示されます。私のコードは次のとおりです。
PHKEY loadDefaultHiveAppKey(){
PHKEY temporaryHKEY = 0;
wchar_t * errorText = 0;
//wchar_t * defaultProfileHiveFile = getDefaultUserProfileHive();
/* For debugging purpouses use a hardcoded path */
wchar_t * defaultProfileHiveFile = L"C:\\Users\\Default\\NTUSER.dat";
long returnCode = 0;
returnCode = RegLoadAppKey(
defaultProfileHiveFile,
temporaryHKEY,
KEY_ALL_ACCESS,
REG_PROCESS_APPKEY,
0
);
//free(defaultProfileHiveFile);
if(returnCode != ERROR_SUCCESS){
// http://stackoverflow.com/questions/455434/how-should-i-use-formatmessage-properly-in-c
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
returnCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&errorText,
0,
NULL
);
printf("Failed to open registry hive!\n");
if(errorText != 0){
/* This prints "The Parameter is Incorrect" */
printf("%ls\n", errorText);
LocalFree(errorText);
errorText = NULL;
} else {
printf("Unknown reason!\n");
}
return 0;
}
return temporaryHKEY;
}
私のメインは基本的に前のメソッドへの呼び出しです。の msdn 記事は次のとおりですRegLoadAppKey
。