C# 开机自动启动程序
新建一个winform拖一个checkbox进来。。
然后设置它的changed事件。
已经测试过,可以直接复制使用。
添加引用类:
C/C++ Code复制内容到剪贴板
- using Microsoft.Win32;
C/C++ Code复制内容到剪贴板
- private void checkBox1_CheckedChanged(object sender, EventArgs e)
- {
- if (checkBox1.Checked) //设置开机自启动
- {
- MessageBox.Show ("设置开机自启动,需要修改注册表","提示");
- string path = Application.ExecutablePath;
- RegistryKey rk = Registry.LocalMachine;
- RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
- rk2.SetValue("JcShutdown", path);
- rk2.Close();
- rk.Close();
- }
- else //取消开机自启动
- {
- MessageBox.Show ("取消开机自启动,需要修改注册表","提示");
- string path = Application.ExecutablePath;
- RegistryKey rk = Registry.LocalMachine;
- RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
- rk2.DeleteValue("JcShutdown", false);
- rk2.Close();
- rk.Close();
- }
- }
报错信息:注册表项访问被拒绝
1、在--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项,
2、勾选“启用ClickOnce安全设置”,
3、项目下面会多出一个“app.manifest”的文件,选中它并 找到代码段
<requestedExecutionLevel level="asInvoker" uiAccess="false" />,
将其改为:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />,
4、改正后,不要急于重新编译生成,再次打开“属性--安全性”界面,
将“启用ClickOnce安全设置”前面的勾去掉后再编译运行
5、结束!就可以解决此问题存在
这时候修改完成,按下F5进行调试,通常会收到如下的错误提示:【ClickOnce 不支持请求执行级别“requireAdministrator”】。
事情好像发生了相互矛盾,上面开启【ClickOnce】便自动创建了app.manifest,现在修改了app.manifest却提示:ClickOnce 不支持请求执行级别“requireAdministrator”。
解决方法是:只要把【启用ClickOnce安全设置】不勾选就可以了。
如果操作步骤正确,按下F5进行调试,会弹出如下的提示框,VS具有提升的权限。
PS:发布的时候,ClickOnce勾是自动勾上的,无法去除:
上一篇 C# 报错/消息