我想在启动时运行C#应用程序。我使用了这段代码,发现了here:
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进行了先前的研究,没有提出here和here的解决方案和代码段。我得到了安全性和访问错误消息,或者编写了注册表,但是该程序拒绝从操作系统启动。但是,我看到上述问题是在2010年和2011年提出的,并且我认为此后情况发生了变化。
有没有办法让程序在启动时运行?我在Windows 10 April 2018 Update上安装了Windows 10,家庭版,版本1803和.NET Framework 4.7.2。
稍后编辑:其他信息:
答案 0 :(得分:0)
做一些研究,发现创建快捷方式并将其放置在Startup
文件夹中是一种更好的方法。 here给出了更多详细信息,并且代码(有效且可解决问题)为:
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();
要使用上述代码,您需要包括IWshRuntimeLibrary
命名空间,并向项目添加 Windows脚本宿主对象模型引用。
其他参考是here