如何从“开始”菜单将我的应用程序设置为 运行?

How can I get my app to run from the Start menu?

如果您在“开始”菜单的编辑框中键入 "regedit" 并按下 Enter 键,将调用注册表编辑器。 "cmd" 和命令行也是如此,毫无疑问还有其他几个应用程序。

如何让我的应用程序以相同的方式响应,以便如果用户在“开始”菜单编辑框中输入 "Platypus",将调用 Platypus.exe?

是否需要对注册表进行操作/在某处添加一个条目,如果需要,只需要添加哪些键和值?

我会满足于用户需要手动 运行 一次应用程序(两次单击它的图标;它是一个 Winforms 应用程序),此时启动代码(没有双关语意)会执行任何操作从今以后使应用程序变得智能化是必要的(Windows 键,"Platypus",以启动应用程序)。

我知道这与 easy/easier 用户在想要 运行 应用程序时只需简单地双击桌面图标一样,但是这个特定的功能不是我的想法,所以投诉关于这个问题的古怪无济于事。

更新

我添加了 Chandan 推荐的代码(带有我的可执行文件的名称):

public static void AddToStartup()
{
    using (RegistryKey startup = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true))
    {
        startup.SetValue("RoboReporter", "\"" + System.Windows.Forms.Application.ExecutablePath + "\"");
    }
} 

...从主窗体的加载事件调用它:

private void FormRoboReporter_Load(object sender, EventArgs e)
{
    RoboReporterConstsAndUtils.AddToStartup();
}

...关闭应用程序,进入开始菜单并输入程序名称("RoboReporter"),它所做的只是调出相关文件名的搜索结果。

更新 2

它所做的是使我的应用程序在计算机重新启动时 运行。那不是我想要的。上面的代码向 HKEY_CURRENT_USER.Software.Microsoft.Windows.CurrentVersion.Run 添加了一个条目,如下所示(以及早于它的其他几个条目):

我不希望应用程序在每次计算机重新启动时启动,所以我删除了该条目。问题仍然存在:如何使应用程序 运行 可以从“开始”菜单启用?

您可以将应用程序的父目录路径添加到名为 PATH 的环境变量中。

string pathvar = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("PATH", pathvar + ";" + Application.StartupPath + "\", EnvironmentVariableTarget.Machine);

(注意添加到这个变量的路径要以反斜杠结尾\,每条路径之间用分号分隔;)

将父目录的路径添加到环境变量将使它的所有内容都可以从“开始”菜单的搜索字段、RunCMD.

快速访问

您也可以将 EnvironmentVariableTarget.Machine 更改为 EnvironmentVariableTarget.User 以仅针对当前用户修改变量。


编辑:

注意:为整个机器设置变量(通过使用 EnvironmentVariableTarget.Machine)似乎需要从一个应用程序完成时提升权限。

你可能想要 运行 这个

public static void AddToStartup()
{
    using (RegistryKey startup = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true))
    {
        startup.SetValue("Name_of_your_Program", "\"" + Application.ExecutablePath + "\"");
    }
}