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

偶尔我必须在我的一个Windows Server 2012服务器上运行长时间运行的进程。 这个过程有时可以运行一个星期。 Windows更新在必须重新启动时终止该进程。

我正在寻找一种方法来停止Windows更新服务程序,而这些进程之一正在运行,并重新启用Windows更新后的过程完成。 (而不是只是禁用服务器上的Windows更新)。

我有两个可能的方法的想法:

1)使用ServiceController类

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

我不确定什么是最好的解决scheme。 或者如果有更好的select,我没有看到。

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

做到这一点的方式是通过Windows注册表。

您必须编辑注册表值。

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

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

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

为了解决那些我用Windows Update Agent玩的问题,到了用Procmon监控用户协会的时候

这就是我发现大部分问题的方法。

与注册表进行交互:

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强制使用WUA