如何在 Windows 启动(更新)时运行 C# 应用程序?

我想在启动时运行 C# 应用程序。我用了这个代码,我在这里找到:


private void SetStartup(bool enable)

    {

        string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";


        RegistryKey startupKey = Registry.CurrentUser.OpenSubKey(runKey);


        if (enable)

        {

            if (startupKey.GetValue("ZanNews") == null)

            {

                startupKey.Close();

                startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);

                startupKey.SetValue("ZanNews", "\"" + Application.ExecutablePath + "\"");

                startupKey.Close();

            }

        }

        else

        {

            startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);

            startupKey.DeleteValue("ZanNews", false);

            startupKey.Close();

        }

    }

尽管该条目显示在注册表和任务管理器中,但该程序不会从 Windows 开始。


在提出这个问题之前,我对StackOverflow进行了研究,这里和这里提出的解决方案和代码片段都没有奏效。要么我收到安全和访问错误消息,要么注册表已写入,但程序拒绝从操作系统启动。然而,我看到上面的问题是在2010年和2011年被问到的,我认为从那时起事情发生了变化。


有没有办法让程序在启动时运行?我在 Windows 10 2018 年 4 月更新上安装了 Windows 10、家庭版、版本 1803 和 .NET Framework 4.7.2。


素胚勾勒不出你
浏览 102回答 1
1回答

呼啦一阵风

做一些研究,我发现这是创建快捷方式并将其放在文件夹中的更好方法。这里提供了更多细节,代码(工作并解决问题)是:Startup        WshShell wshShell = new WshShell();        IWshRuntimeLibrary.IWshShortcut shortcut;        string startUpFolderPath =          Environment.GetFolderPath(Environment.SpecialFolder.Startup);        // Create the shortcut        shortcut =          (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(            startUpFolderPath + "\\" +            Application.ProductName + ".lnk");        shortcut.TargetPath = Application.ExecutablePath;        shortcut.WorkingDirectory = Application.StartupPath;        shortcut.Description = "Launch My Application";        // shortcut.IconLocation = Application.StartupPath + @"\App.ico";        shortcut.Save();为了能够使用上述代码,需要包含命名空间并将 Windows 脚本宿主对象模型引用添加到项目中。IWshRuntimeLibrary其他参考资料在这里
打开App,查看更多内容
随时随地看视频慕课网APP