2

我正在尝试设置一个注册表值,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;
}

任何帮助将不胜感激。

4

1 回答 1

3

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

于 2013-02-11T18:17:54.520 回答