我目前正在學習如何使用C++使用註冊表。我已經提出了一個應用程序,該應用程序應該可以查看某個鍵中是否存在某個值。但是,應用程序一旦達到RegEnumValue(),就會崩潰。任何想法可能是什麼問題?RegEnumValue崩潰應用程序
代碼:
#include <iostream>
#include <windows.h>
#include <Psapi.h>
using namespace std;
bool registerKeyExists(char* key, char* subkey);
int main()
{
while(true){
if(registerKeyExists("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "SynTPEnh")){
return 0;
}
}
return 0;
}
bool registerKeyExists(char* key, char* subkey){
HKEY keyEnum;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &keyEnum) == ERROR_SUCCESS){
char* valueName;
DWORD valueSize = 100;
DWORD cbName;
FILETIME lastFiletime;
DWORD i = 0;
DWORD returnCode = ERROR_SUCCESS;
while(returnCode == ERROR_SUCCESS){
cout << "This show!" << endl;
returnCode = RegEnumValue(keyEnum, i, valueName, &valueSize, NULL, NULL, NULL, NULL);
cout << "This doesn't show!" << endl;
if(valueName == subkey)
return true;
i++;
}
}
return false;
}
不要忘了比較尺寸! 'strlen(valueName)== strlen(subkey)' –
@KlemensBaum:使用'strcmp()'時不需要比較大小。如果長度不同,'strcmp()'不會返回0. –
啊,謝謝!現在它運行完美! – Anton