zoukankan      html  css  js  c++  java
  • 开机自启动——修改注册表

    因为项目中需要用到设置程序为开机自启动的,就在代码中修改注册表的方式来做的。

    但是在做的过程中出现一些问题,在查阅资料后,进行了一些总结。

    一、代码

    直接使用C#代码操作注册表,注册为开机启动项。

        RegistryKey Local = Registry.LocalMachine;
        RegistryKey runKey = Local.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", RegistryKeyPermissionCheck.ReadWriteSubTree);
        string keyName = Path.GetFileName(Application.ExecutablePath);
        string valueStr = """ + Application.ExecutablePath + "" -autorun";
        object key = runKey.GetValue(keyName);
        if (key != null)
        {
            runKey.DeleteValue(keyName);
        }
        if (config.IsAuto)
        {
            runKey.SetValue(keyName, valueStr);
        }
        Local.Close();

    Registry.LocalMachine:本地计算机的配置数据,属于注册表的顶级节点;
    RegistryKey.CreateSubKey:新建或者打开一个现有子项进行读写访问;
    后面的代码是添加或删除指定的项,这些操作是对上面打开的子项,这里做了是否已经存在的判断。

    二、自启动

    在注册完成后出现了一些问题,有时不能正确的自启动。

    查阅资料发现,注册表有几个地方都可以进行注册开机自启动。

    打开注册表:win + R ,打开运行对话框;输入 regedit ,打开注册表编辑器。

    这些地方分别是:

    1、HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
    2、HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRun
    3、HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun

    也分部查看了这几个地方,一些主流的软件设置开机自启动后,这几个地方都有可能是注册的地方。

    HKEY_LOCAL_MACHINE:本地计算机的顶级项,在这个里面注册的,所以用户登录后都可以自启动;

    HKEY_CURRENT_USER:当前用户顶级项,注册到这个下面的,只有该用户登录才会自启动;

    Wow6432Node:是32位映射的子项,一些32位软件设置;

    从上面可以看出,注册的地方不一样,登录的用户不一样即使是同一个机器,开机自启的软件也会不一样。

    问题:

    在实践过程中,出现同一个代码,运行时的权限、是否管理员运行导致注册的地方不一样。

    这个问题还没有搞明白。

  • 相关阅读:
    swift中数组和字典得使用,及循环得使用方法(xcode6版本上所写代码)
    ScrollView各属性,及代理方法汇总
    贝塞尔曲线
    iOS基础教程-collectionView的应用
    iOS中,使用block传值简单应用
    ES6~Promise的原理及使用一(copy自: https://www.cnblogs.com/lvdabao/p/jquery-deferred.html)
    react~setState的运行机制
    react ~4.组件table的使用及表格分页处理
    react ~3.动态无限层级顶部菜单和左边菜单设计制作
    react ~2.登陆页面验证码的获取传递与刷新
  • 原文地址:https://www.cnblogs.com/zhurong/p/11039615.html
Copyright © 2011-2022 走看看