c#操作注册表不重启即生效

最近遇到了一些设置,需要去操作注册表,但是只对注册表自身操作,很多应用或服务是不知情的,面对这种情况,最常见的方法是重启电脑,但是对于一个成熟、稳重、有理想的软件来说,怎么可能允许重启电脑才生效的这种抢矿(没打错)发生!

操作注册表:

命名空间using Microsoft.Win32;

原文:c#操作注册表

我这里只读取跟删除,原文更详细

        //读取注册表
        private string[] ReadRegedit()
        {
            string sts = @"SYSTEM\ControlSet001\Control\Print\Printers\";
            RegistryKey rsg = Registry.LocalMachine.OpenSubKey(sts, true);
            return rsg.GetSubKeyNames();
        }
        //删除注册表
        private void DllCE(string str)
        {
            string sts = @"SYSTEM\ControlSet001\Control\Print\Printers\" + str;
            Registry.LocalMachine.OpenSubKey(sts, true);
            Registry.LocalMachine.DeleteSubKeyTree(sts, true);
        }

注册表生效

这个较为麻烦,因为注册表包含很多信息,通常是更新组策略,但是有些面板是需要更新服务

更新策略组

string sts = "gpupdate /target:computer /force";

            Process pro = new Process();
            // 设置命令行、参数
            pro.StartInfo.FileName = "cmd.exe";
            pro.StartInfo.UseShellExecute = false;
            pro.StartInfo.RedirectStandardInput = true;
            pro.StartInfo.RedirectStandardOutput = true;
            pro.StartInfo.RedirectStandardError = true;
            pro.StartInfo.CreateNoWindow = true;
            // 启动CMD
            pro.Start();
            // 运行端口检查命令
            pro.StandardInput.WriteLine(sts);
            pro.StandardInput.WriteLine("exit");

我用的是cmd,还有重启服务的,我这里是打印服务,对应上面的注册表的修改,如果是别的,就可能要对应别的服务了

//开启服务
        private void OpenPrinterSpooler()
        {
            //开启服务
            ProcessStartInfo a = new ProcessStartInfo(@"c:/windows/system32/cmd.exe", "/c  net start Spooler");
            a.WindowStyle = ProcessWindowStyle.Hidden;
            Process process = Process.Start(a);
        }

        //关闭服务
        private void ClosePrinterSpooler()
        {
            ProcessStartInfo a = new ProcessStartInfo(@"c:/windows/system32/cmd.exe", "/c  net stop Spooler");

            a.WindowStyle = ProcessWindowStyle.Hidden;
            Process process = Process.Start(a);
        }

在Windows 8.1专业版64位上测试成功

完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值