我正在尝试在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
下设置一个注册表值,以使我的应用程序在启动时运行。以下函数返回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;
}
非常感谢任何帮助。
答案 0 :(得分:3)
如果您的程序是32位并在64位操作系统上运行,则您对HKLM \ SOFTWARE的访问权限将重定向到HKLM \ SOFTWARE \ Wow6432Node。在MSDN上有关于此的更多信息:32-bit and 64-bit Application Data in the Registry