如何让我的应用程序从“开始”菜单运行?

时间:2016-05-13 22:54:15

标签: c# winforms registry startup regedit

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

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

是否需要操纵注册表/在那里添加一个条目,如果需要,只需要添加哪个键和值?

我会满意用户需要手动运行一次应用程序(双击它的图标;它是一个Winforms应用程序),此时启动代码(没有双关语意图)可以做任何必要的事情该应用程序此后Startsmartable(Windows键," Platypus",以启动应用程序)。

我知道,当用户想要运行应用时,只需双击桌面图标就可以轻松/轻松,但这个特殊功能不是我的想法,所以关于奇怪性的抱怨这个问题无济于事。

更新

我添加了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中添加了一个条目,如此处所示(以及其他几个早于它的条目):

enter image description here

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

2 个答案:

答案 0 :(得分:4)

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

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

(请注意,添加到此变量的路径应以反斜杠\结尾,每个路径以分号;分隔

将父目录的路径添加到环境变量中,可以从“开始”菜单的搜索字段,Run和{{1}快速访问其所有内容}。

您也可以将CMD更改为EnvironmentVariableTarget.Machine,仅修改当前用户的变量。

修改

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

答案 1 :(得分:1)

你可能想要运行这个

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