在长时间运行的进程中禁用Windows Update

时间:2015-02-17 10:40:51

标签: c# windows powershell

有时我必须在我的一台Windows Server 2012服务器上运行长时间运行的进程。这些过程有时可以运行一周以上。必须重新启动时,Windows更新才会终止此进程。

我正在寻找一种以编程方式停止Windows更新服务的方法,同时其中一个进程正在运行,并在该过程完成后重新启用Windows更新。 (而不是仅在服务器上禁用Windows更新)。

我对可能的方法有2个想法:

1)使用ServiceController class

2)从我的程序中调用PowerShell命令。

我不确定什么是最好的解决方案。或者如果有更好的选择,我没有看到。

1 个答案:

答案 0 :(得分:1)

2年前,我不得不实施这样的功能。

这样做的方法是通过Windows注册表。

您必须编辑注册表值。

我确实记得Microsoft文档没有公开所有功能 一些错误,他们改变了Windows版本之间的一些东西。

*要应用行为,他们会编辑一些值,有时会添加/删除一些(在某些操作系统上你还需要重启WUA)。

link(在自动更新配置段落中)包含有关注册表值的更多信息。

解决我使用Windows更新代理程序时遇到的问题,当我用Procmon

监视WUA时

我是如何找到大部分问题的。

与注册表进行交互:

        using (var hive = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Default))
        using (var key = hive.OpenSubKey(@"put the key there (in most of the operation systems the key is not where microsoft documented)",true))
        {
            //do your logic
        }

我无法向您提供更多信息,因为这会违反NDA ....

提示:完成后我建议你使用API

强制用水户协会