偶尔我必须在我的一个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