gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:01:04 24 4
gpt4 key购买 nike

有时我必须在我的一台 Windows Server 2012 服务器上运行长时间运行的进程。这些过程有时会运行一个多星期。 Windows 更新在必须重新启动时会终止此进程。

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

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

1) 使用 ServiceController class

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

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

最佳答案

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
}

我不能给你更多信息,因为那将违反保密协议(protocol)....

提示:完成后,我建议您使用 API 强制使用 WUA

关于c# - 在长时间运行的进程中禁用 Windows 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com