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

C# 在长时间运行的进程中禁用Windows Update,c#,windows,powershell,C#,Windows,Powershell,有时,我必须在我的一台windows server 2012服务器上运行长时间运行的进程。这些过程有时可以运行一周以上。Windows update在必须重新启动时终止此进程 我正在寻找一种方法,在其中一个进程运行时以编程方式停止windows update服务,并在进程完成后重新启用windows update。(而不仅仅是在服务器上禁用windows update) 我对可能的方法有两个想法: 1) 使用 2) 从我的程序调用PowerShell命令 我不确定什么是最好的解决办法。或者,如果

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

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

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

1) 使用

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


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

两年前,我不得不实现这样一个功能

方法是通过windows注册表

您必须编辑注册表值

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

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

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

为了解决这些问题,我使用了windows update代理,在我用

这就是我发现大多数问题的原因

要与注册表交互,请执行以下操作:

        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
        }
我不能给你更多的信息,因为那将是违反保密协议的


提示:完成后,我建议您使用

强制WUA,我不是windows server的专家。但是,如果通过防火墙阻止对windows update服务器的访问呢?服务器上的windows update不应该自动重新启动它。至少我从未见过这种行为。您应该查看是否有任何计划任务要重新启动服务器,并查看是否禁用这些任务,而不是windows更新。但是,这不会阻止用户(我所说的用户是指有权限的人)登录并手动重新启动/触发Windows Update重新启动。@Pheonx通常情况下,Windows更新和可能重新启动此服务器没有问题,因此这是当前的配置。我只是在寻找一种在执行长时间运行的进程时停止这种行为的方法。我不想完全禁用更新,但我愿意接受你们建议的任何其他选项。@BerndGit我不想永久禁用windows update,就在其中一个进程正在运行时(有时我几周内不必运行它们)@Pheonyx:IIRC,在我们的Windows Server 2008 R2上,默认行为确实是。@mmilan我在回答中忘了说,如果您的组织有WSUS,您可以通过他的API进行配置,您的生活会轻松得多