【问题标题】:How to start application on Windows startup?如何在 Windows 启动时启动应用程序?
【发布时间】:2014-03-25 10:57:31
【问题描述】:

我正在创建 C++ 应用程序,并希望在启动 Windows 时为我的用户提供启动我的应用程序的选项。首先要记住的是我使用 Windows 注册表来设置它,但不知道在哪里写和写什么。另外,用户在运行我的应用程序时是否需要拥有管理员权限,以便它能够在需要时写入 Windows 注册表的那部分?

【问题讨论】:

  • 您的意思是希望应用程序在 Windows 启动时启动,还是希望应用程序在用户登录时启动?

标签: c++ windows registry startup


【解决方案1】:

您需要使用Software\Microsoft\Windows\CurrentVersion\Run 键(有关更多信息,请参阅MSDN)。 (字符串)值应该是您的应用程序的路径。

您不需要管理权限即可在HKEY_CURRENT_USER 中创建它,但您的应用程序只会在当前用户的会话中启动。如果您需要为所有用户自动启动,请使用具有提升权限的HKEY_LOCAL_MACHINE hive!

【讨论】:

  • 谢谢。我认为这会做到。
【解决方案2】:

注册表是这样做的隐藏方式; “程序”菜单中的“启动”文件夹是用户可见的方法。见CSIDL_STARTUP。不需要管理员权限,这是每个用户的设置。 CSIDL_COMMON_STARTUP 需要管理员权限。

【讨论】:

  • 但是很难检测应用程序是否已经在启动中。
  • 其实比较简单,就是文件检查一下。
【解决方案3】:

您可以通过注册表添加要启动的应用程序。 我为你写了一个示例函数

    public void AddToStartup(string name)
    {
        RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
        rkApp.SetValue(name + ".exe", Application.ExecutablePath.ToString());
    }

【讨论】:

  • 谢谢。我写代码没问题。我只是想知道在哪里写什么,写什么,是否需要管理员权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多