我们如何从msconfig窗口中删除启动条目?

时间:2013-09-11 06:04:02

标签: c# .net windows startup

我在窗口启动时创建启动条目。如果用户使用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();

1 个答案:

答案 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