RegSetValueEx返回ERROR_SUCCESS,但没有值显示

我试图在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下设置registry值,使我的应用程序在启动时运行。 以下函数返回TRUE ,但值不显示。

 BOOL InstallRunOnStartup(const char* applicationName) { HKEY key; char filePath[MAX_PATH]; long result; BOOL ret = FALSE; result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0L, KEY_ALL_ACCESS, &key); if (result == ERROR_SUCCESS) { if (GetModuleFileNameA(NULL, filePath, MAX_PATH) != 0) if (RegSetValueEx(key, applicationName, 0, REG_SZ, filePath, strlen(filePath) + 1) == ERROR_SUCCESS) ret = TRUE; RegCloseKey(key); } return ret; } 

任何帮助将不胜感激。

如果您的程序是32位,并在64位操作系统上运行,则您访问HKLM \ SOFTWARE将被重定向到HKLM \ SOFTWARE \ Wow6432Node。 有关MSDN的更多信息: 注册表中的32位和64位应用程序数据