RegSetValueEx返回ERROR_SUCCESS但没有显示任何值

时间:2013-02-10 01:28:40

标签: c windows winapi registry

我正在尝试在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;
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

如果您的程序是32位并在64位操作系统上运行,则您对HKLM \ SOFTWARE的访问权限将重定向到HKLM \ SOFTWARE \ Wow6432Node。在MSDN上有关于此的更多信息:32-bit and 64-bit Application Data in the Registry