您的位置:首页 > 其它

开机自动启动程序

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注册表子键中,方法代码如下:

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: