我在窗口启动时创建启动条目。如果用户使用msconfig启动窗口取消选择该条目,我的应用程序将创建一个重复的条目。如果现有条目存在,我需要删除现有条目或跳过创建重复条目。我怎么能这样做?
创建启动条目的代码是: -
string startUpFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + "MyexeName.exe";
if (System.IO.File.Exists(startUpFolderPath))
{
return;
}
WshShellClass wshShell = new WshShellClass();
IWshRuntimeLibrary.IWshShortcut shortcut;
shortcut = (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(startUpFolderPath);
shortcut.TargetPath = Application.ExecutablePath;
shortcut.WorkingDirectory = Application.StartupPath;
shortcut.Save();
答案 0 :(得分:0)
条目存储在注册表中。
这是您应该添加和删除条目的方式:
using Microsoft.Win32;
private void SetStartup()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (ShouldAdd)
rk.SetValue(AppName, Application.ExecutablePath.ToString());
else
rk.DeleteValue(AppName, false);
}
这是一个不同条目的列表:
https://stackoverflow.com/a/5394144/2027232
要获得管理员权限,您需要向应用添加清单文件:
按Ctrl + Shift + A(添加新项目),然后选择(应用程序清单文件)
打开清单文件并更改行:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
到
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
然后按保存。
更多信息:How to give my C# app administrative rights? manifest file