开机自动启动程序
2014-04-09 14:10
183 查看
实现开机时程序性自动启动可行的方法一种方法是:在注册表中添加启动项。在.net中操作注册表要用到using Microsoft.Win32程序集中的RegistryKey类,关于此类的介绍详见http://msdn.microsoft.com/zh-cn/library/microsoft.win32.registrykey(v=vs.110).aspx
有了这个类我们就可以将我们的程序添加到SOFTWARE\MicroSoft\Windows\CurrentVersion\Run注册表子键中,方法代码如下:
在WPF中,我们可以 创建一个选框,当鼠标点击选中时,就把该程序写入注册表项,选中的情况下再次点击,从注册表中移除该项:
此时我们只需在命名空间前加入如下代码:
有了这个类我们就可以将我们的程序添加到SOFTWARE\MicroSoft\Windows\CurrentVersion\Run注册表子键中,方法代码如下:
<span style="font-family:Times New Roman;"> private static bool runWhenStart(bool started, string exeName, string path) { RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MicroSoft\\Windows\\CurrentVersion\\Run", true); if(key == null) { key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\MicroSoft\\Windows\\CurrentVersion\\Run"); } if(started == true) { try { key.SetValue(exeName,path); key.Close(); } catch { return false; } } else { try { key.DeleteValue(exeName,false); } catch { return false; } } return true; }</span>
在WPF中,我们可以 创建一个选框,当鼠标点击选中时,就把该程序写入注册表项,选中的情况下再次点击,从注册表中移除该项:
<span style="font-family:Times New Roman;"> private void AutoStartApp_MouseDown(object sender, MouseButtonEventArgs e) { bool ret = false; string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; str.Replace("\"", ""); if (AutImage.Source.ToString().Contains("swich_off.png")) { AutImage.Source = new BitmapImage(new Uri("..\\resource\\swich_on.png", UriKind.RelativeOrAbsolute)); IniFile.Instance.SetAutoStartFlag("Y"); ret = runWhenStart(true, "Z.exe", str); } else { AutImage.Source = new BitmapImage(new Uri("..\\resource\\swich_off.png", UriKind.RelativeOrAbsolute)); IniFile.Instance.SetAutoStartFlag("N"); ret = runWhenStart(false, "Z.exe", str); } }</span>但是,在win8和win7下通常会抛出一个“不允许所请求的注册表访问权”的异常,这是由于系统没有赋予我们注册表读写的权限。在此种情况下,我们需要对获得权限。这是需引用System.Security.Permissions程序集中的RegistryPermissionAttribute类,该类的详解见http://msdn.microsoft.com/zh-cn/library/system.security.permissions.registrypermissionattribute(v=vs.110).aspx
此时我们只需在命名空间前加入如下代码:
<span style="font-family:Times New Roman;">using System.Security.Permissions; //[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, Read = @"HKEY_LOCAL_MACHINE\SOFTWARE")] [assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "SOFTWARE\\MicroSoft\\Windows\\CurrentVersion\\Run")] namespace ZWPF.View</span>
<span style="font-size:14px;"><img src="file:///C:\Users\Ares\AppData\Roaming\Tencent\Users\175328955\QQ\WinTemp\RichOle\{E8]T_AC)%A_FZ50E@J%)V0.jpg" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" /></span>
相关文章推荐
- [WinForm]写一个小程序把指定目录的程序添加到开机自动启动(无法绕过360检查)
- 系统开机自动运行程序和自动启动服务 (转载)
- 修改注册表开机自动启动程序
- 程序开机自动启动
- win7用控制台本地组策略自定义程序(任意文件)开机自动启动
- Linux下如何让自己的程序在开机时自动启动
- 成功在Tiny6410开发板上实现监控程序开机自动启动(1)
- c#怎样打包 可以使另一个程序随开机自动启动
- 在linux下设置开机自动启动程序的方法
- c#开机自动启动程序实现代码
- ubuntu开机自动启动程序设置
- Ubuntu添加开机自动启动程序的方法
- VC 开机自动启动程序代码
- S60 3.0上的程序安装后启动运行和程序开机自动运行
- Android开机自动启动程序
- C# 开机自动启动程序
- Ubuntu添加开机自动启动程序方法
- VC 开机自动启动程序代码
- 树莓派开机自动启动程序
- 在linux下设置开机自动启动程序的方法