`
zzc125
  • 浏览: 12880 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

程序自启动的问题

阅读更多

前段时间在做一个截图工具时,需要设置开机自启。后来发现程序不能实现自启动,反而让我有了一些新收获。看下面的的代码,这便是我原来设置开机自启的代码:

//采用IO的方式设置开机自启

RegistryKey hklm = Registry.LocalMachine;

RegistryKey ziqi;

private void button1_Click(object sender, EventArgs e)
{
FileInfo fileinfo = new FileInfo("WindowsFormsApplication1.exe");

ziqi = hklm.CreateSubKey(@"software\microsoft\windows\CurrentVersion\run");

ziqi.SetValue("test", (object)fileinfo.FullName, RegistryValueKind.String);

ziqi.Close();

}

当点击按钮之后,注册表的记录是:

TT截图未命名

这个路径是正确的。因为我的项目是放在桌面的。当我把机器重启之后,程序的确可以重启。但当我又点击了一下开机自启的按钮之后,注册表的记录是:

TT截图未命名2

在此说明一下,我的系统是Windows 7的。在XP下面我测试时,不是这个记录,是在Document and Setting 下面的文件夹。具体是哪个我忘了。有兴趣的朋友可以自己测试一下。

所以当我重启之后,程序就启不动了,System32下面本就没有我的程序。

至于为什么是这样,我现在也没有弄清楚原因。如果有哪位朋友知道原因,麻烦相告一声。

虽然不知道原因,但是我找到了解决的办法,代码如下:

private void button2_Click(object sender, EventArgs e)
{
Process pr = Process.GetCurrentProcess();

ziqi = hklm.CreateSubKey(@"software\microsoft\windows\CurrentVersion\run");

ziqi.SetValue("test", (object)pr.MainModule.FileName, RegistryValueKind.String);

ziqi.Close();

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics