C#应用程序未在启动时运行,启动影响"未测量"在Windows 10上

时间:2016-05-25 14:29:51

标签: c# wpf

我有一个小型的WPF应用程序。我试图在Windows启动时启动它 我的C#代码如下:

using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
                {
                    key.SetValue("MyApp", "\"" + System.Reflection.Assembly.GetExecutingAssembly().Location + "\"");
                    key.Close();
                }

并删除了RegistryKey:

using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
            {
                key.DeleteValue("MyApp", false);
                key.Close();
            }

我已经构建了一个可执行文件(MyApp.exe)并安装在我的计算机上。但Windows启动时应用程序仍然无法运行。我能怎么做?如何改变启动影响"未测量"任务管理器上的其他人?

我使用的是Windows 10 x64。抱歉我的英文。

感谢。

1 个答案:

答案 0 :(得分:2)

对于像我这样有问题的人,我已经解决了我的问题,我的应用程序需要以管理员身份运行,所以如果我按照上面的代码编写并设置 app.manifest

<requestedExecutionLevel level = "requireAdministrator" UIAccess = "false "/>

它不会在启动Windows上运行。

要解决此问题,我将代码从 CurrentUser 更改为 LocalMachine

 using (RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
            {
                key.SetValue("TechTemp", "\"" + System.Reflection.Assembly.GetExecutingAssembly().Location + "\"");
                key.Close();
            }

 using (RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
            {
                key.DeleteValue("TechTemp", false);
                key.Close();
            }

下一个问题是如何关闭应用程序的UAC(如果您的计算机上启用了UAC),您可以看到here。关于状态影响,即使状态在任务管理器上“未测量”,您的应用程序仍将在窗口启动时运行。 感谢Rashid MalikSami

<强>更新

您可以阅读here在Windows启动时运行应用程序而无需添加注册表项,这对我有用。