WPF应用移除开机自动启动功能的实现方法咨询
移除WPF应用开机自启注册表项的解决方案
嘿,你要移除之前添加的开机自启项其实很简单,不用找什么RemoveKey方法——直接用RegistryKey的DeleteValue方法就能搞定,和你添加时的逻辑完全对应。
具体实现代码
你只需要打开同一个注册表子项,然后删除你之前设置的那个程序名称对应的键值就行:
using Microsoft.Win32; using System.Reflection; // 以可写模式打开开机启动项的注册表键 using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true)) { if (key != null) { string appName = Assembly.GetExecutingAssembly().GetName().Name; // 先检查键值是否存在,避免删除不存在的项抛出异常 if (key.GetValue(appName) != null) { key.DeleteValue(appName); // 可选:这里可以添加提示用户移除成功的逻辑,比如弹窗提示 } } }
关键细节说明
- 用
using语句包裹RegistryKey,能确保操作完成后自动释放注册表资源,避免句柄泄漏。 - 删除前判断键值是否存在,能有效避免因为键值已被删除/不存在而抛出
ArgumentException异常。 - 我们操作的是
CurrentUser下的注册表项,不需要管理员权限,和你之前添加自启项的逻辑一致,对用户更友好。
验证移除是否生效
你可以手动打开注册表编辑器(按下Win+R,输入regedit回车),导航到HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,看看你的应用名称对应的键值是否已经消失——如果没了就说明移除成功啦。
内容的提问来源于stack exchange,提问作者user2908206




