C# 开机自动启动程序
C# 2018-09-06 09:53:11

新建一个winform拖一个checkbox进来。。

然后设置它的changed事件。

已经测试过,可以直接复制使用。

 

添加引用类:

C/C++ Code复制内容到剪贴板
  1. using Microsoft.Win32;  

 

 

C/C++ Code复制内容到剪贴板
  1. private void checkBox1_CheckedChanged(object sender, EventArgs e)  
  2. {  
  3.     if (checkBox1.Checked) //设置开机自启动    
  4.     {  
  5.         MessageBox.Show ("设置开机自启动,需要修改注册表","提示");    
  6.         string path = Application.ExecutablePath;  
  7.         RegistryKey rk = Registry.LocalMachine;  
  8.         RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");  
  9.         rk2.SetValue("JcShutdown", path);  
  10.         rk2.Close();  
  11.         rk.Close();  
  12.     }  
  13.     else //取消开机自启动    
  14.     {  
  15.         MessageBox.Show ("取消开机自启动,需要修改注册表","提示");    
  16.         string path = Application.ExecutablePath;  
  17.         RegistryKey rk = Registry.LocalMachine;  
  18.         RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");  
  19.         rk2.DeleteValue("JcShutdown"false);  
  20.         rk2.Close();  
  21.         rk.Close();  
  22.     }    
  23. }  

 

报错信息:注册表项访问被拒绝

1.png

 

2.png

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勾是自动勾上的,无法去除:

4.png

 

 

本文来自于:http://www.yoyo88.cn/study/net/362.html

Powered by yoyo苏ICP备15045725号