C#窗体程序开机启动的问题

功能:窗体程序(exe)开机启动

实现:

public void SetAutoRun(string fileName, bool isAutoRun)
{
    RegistryKey reg = null;
    try
    {
        if (!System.IO.File.Exists(fileName))
            throw new Exception("该文件不存在!");
        String name = fileName.Substring(fileName.LastIndexOf(@"\") + 1);
        reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
        if (reg == null)
            reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
        if (isAutoRun)
            reg.SetValue(name, fileName);
        else
            reg.DeleteValue(name, false);
    }
    catch(Exception ex)
    {
        throw new Exception(ex.ToString());  
    }
    finally
    {
        if (reg != null)
            reg.Close();
    }
}


private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if(checkBox1.Checked)
    {
        SetAutoRun(@"D:\WindowsForms.exe", true);  //设置自动启动当前程序
    }
    else
    {
        SetAutoRun(@"D:\WindowsForms.exe", false);  //取消自动启动
    }
}

问题出现:开机并未启动!!!!!!!!!

后面打开注册表发现并没有写入到自己想要的注册表位置上


搜索了一下(我的程序名称为: WindowsForms.exe)发现在其他地方出现了


很奇怪,中间多了一个路径(Wow6432Node)。原来Wow6432Node是64位的操作系统用来放置安装32位软件的注册表信息,然后这里就又有个疑问,VS2013难道还分64位或者32位?百度了下,vs开发环境原来是没有64或者32之分的,但是编译器确实是有32和64位之分的。

最终解决方案:项目=>右键属性=>生成 ,去掉首选32位打勾



据说这个注册表问题时跟操作系统有关系,楼主没有亲身试过,XP系统之前的系统是没有这目录的注册表的,WIN7和WIN8才有这个路径。

到处问题就解决了!楼主菜鸟一枚,有说错的地方请谅解!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值