Оновлення за допомогою WSUS замість веб-сайту Microsoft Windows

Я хочу шукати Wsus або локальну папку для оновлень замість Microsoft. Будь-які ідеї? Ось що я маю, але це лише підключається до оновлень Windows за допомогою Інтернету.

UPDATE

Я знайшов відповідь зі сценарієм VBS. Сервер ssdefault встановлюється груповою політикою. Отже, якщо я застосую групову політику до АВП, то я зміг зробити автоматичні оновлення на основі WSUS. Для кроків групової політики перейдіть за адресою: http://technet.microsoft.com/en-us/library/cc512630.aspx. Переконайтеся, що вказати місце служби інтранету вказує на ваш сервер wsus. У нашому випадку це було http://wsus для статистики та служби оновлення. Також потрібно ввімкнути автоматичні оновлення, як описано в статті.

Якщо ви збираєтеся використати код C# нижче, обов'язково змініть UpdateSearchResult.Online = false; якщо ypu хочете шукати WSUS замість Online.Thanks для будь-кого, хто міг спробувати відповісти на це питання.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WUApiLib;//this is required to use the Interfaces given by microsoft. 

//todo check isassigned and guids for the following and include them in the search.
//http://msdn.microsoft.com/en-us/library/ff357803(VS.85).aspx
//determine the size of the  UPDATE in mb

namespace MSHWindowsUPDATEAgent
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Analyzing your needs");
            UPDATEsAvailable();
            if (NeedsUPDATE())
            {
                EnableUPDATEServices();//enables everything windows need in order to make an UPDATE
                InstallUPDATEs(DownloadUPDATEs());
            }
            else
            {
                Console.WriteLine("There are no UPDATEs for your computer at this time.");
            }
            Console.WriteLine("Press any key to finalize the process");
            Console.Read();
        }
        //this is my first try.. I can see the need for abstract classes here...
        //but at least it gives most people a good starting point.
        public static  void InstalledUPDATEs()
        {
            UPDATESession UPDATESession = new UPDATESession();
            IUPDATESearcher UPDATESearchResult = UPDATESession.CreateUPDATESearcher();
            UPDATESearchResult.Online = true;//checks for UPDATEs online
            ISearchResult SearchResults = UPDATESearchResult.Search("IsInstalled=1 AND IsHidden=0");
            //for the above search criteria refer to 
            //http://msdn.microsoft.com/en-us/library/windows/desktop/aa386526(v=VS.85).aspx
            //Check the remakrs section
            Console.WriteLine("The following UPDATEs are available");
            foreach (IUPDATE x in SearchResults.UPDATEs)
            {
                Console.WriteLine(x.Title);
            }
        }
        public static void UPDATEsAvailable()
        {
            UPDATESession UPDATESession = new UPDATESession();
            IUPDATESearcher UPDATESearchResult = UPDATESession.CreateUPDATESearcher();
            UPDATESearchResult.Online = true;//checks for UPDATEs online
            ISearchResult SearchResults = UPDATESearchResult.Search(
            "IsInstalled=0 AND IsPresent=0 and IsAssigned=1  AND CategoryIDs contains 'E6CF1350-C01B-414D-A61F-263D14D133B4' OR CategoryIDs contains '0FA1201D-4330-4FA8-8AE9-B877473B6441'  ");
            //for the above search criteria refer to 
            //http://msdn.microsoft.com/en-us/library/windows/desktop/aa386526(v=VS.85).aspx
            //Check the remakrs section

            foreach (IUPDATE x in SearchResults.UPDATEs)
            {
                Console.WriteLine(x.Title);
            }
        }
        public static bool NeedsUPDATE()
        {
            UPDATESession UPDATESession = new UPDATESession();
            IUPDATESearcher UPDATESearchResult = UPDATESession.CreateUPDATESearcher();
            UPDATESearchResult.Online = true;//checks for UPDATEs online
            ISearchResult SearchResults = UPDATESearchResult.Search("IsInstalled=0 AND IsPresent=0 and IsAssigned=1  AND CategoryIDs contains 'E6CF1350-C01B-414D-A61F-263D14D133B4' OR CategoryIDs contains '0FA1201D-4330-4FA8-8AE9-B877473B6441'");
            //for the above search criteria refer to 
            //http://msdn.microsoft.com/en-us/library/windows/desktop/aa386526(v=VS.85).aspx
            //Check the remakrs section
            if (SearchResults.UPDATEs.Count > 0)
                return true;
            else return false;
        }
        public static UPDATECollection DownloadUPDATEs()
        {
            UPDATESession UPDATESession = new UPDATESession();
            IUPDATESearcher SearchUPDATEs = UPDATESession.CreateUPDATESearcher();

            ISearchResult UPDATESearchResult = SearchUPDATEs.Search("IsInstalled=0 AND IsPresent=0 and IsAssigned=1  AND CategoryIDs contains 'E6CF1350-C01B-414D-A61F-263D14D133B4' OR CategoryIDs contains '0FA1201D-4330-4FA8-8AE9-B877473B6441'");
            UPDATECollection UPDATECollection = new UPDATECollection();
            //Accept Eula code for each UPDATE
            for (int i = 0; i < UPDATESearchResult.UPDATEs.Count; i++)
            {
                IUPDATE UPDATEs = UPDATESearchResult.UPDATEs[i];
                if (UPDATEs.EulaAccepted == false)
                {
                    UPDATEs.AcceptEula();
                }
                UPDATECollection.Add(UPDATEs);
            }
            //Accept Eula ends here
            //if it is zero i am not sure if it will trow an exception -- I havent tested it.
            if (UPDATESearchResult.UPDATEs.Count > 0)
            {
                UPDATECollection DownloadCollection = new UPDATECollection();
                UPDATEDownloader Downloader = UPDATESession.CreateUPDATEDownloader();

                for (int i = 0; i < UPDATECollection.Count; i++)
                {
                    DownloadCollection.Add(UPDATECollection[i]);
                }

                Downloader.UPDATEs = DownloadCollection;
                Console.WriteLine("Downloading UPDATEs... This may take several minutes.");


                IDownloadResult DownloadResult = Downloader.Download();

                UPDATECollection InstallCollection = new UPDATECollection();
                for (int i = 0; i < UPDATECollection.Count; i++)
                {
                    if (DownloadCollection[i].IsDownloaded)
                    {
                        InstallCollection.Add(DownloadCollection[i]);
                    }
                }
                Console.WriteLine("Download Finished");
                return InstallCollection;
            }
            else
                return UPDATECollection;
        }
        public static void InstallUPDATEs(UPDATECollection DownloadedUPDATEs)
        {
            Console.WriteLine("Installing UPDATEs now...");
            UPDATESession UPDATESession = new UPDATESession();
            UPDATEInstaller InstallAgent = UPDATESession.CreateUPDATEInstaller() as UPDATEInstaller;
            InstallAgent.UPDATEs = DownloadedUPDATEs;

            //Starts a synchronous installation of the UPDATEs.
           //http://msdn.microsoft.com/en-us/library/windows/desktop/aa386491(v=VS.85).aspx#methods
            if (DownloadedUPDATEs.Count > 0)
            {
                IInstallationResult InstallResult = InstallAgent.Install();
                if (InstallResult.ResultCode == OperationResultCode.orcSucceeded)
                {
                    Console.WriteLine("UPDATEs installed succesfully");
                    if (InstallResult.RebootRequired == true)
                    {
                        Console.WriteLine("Reboot is required for one of more UPDATEs.");
                    }
                }
                else
                {
                    Console.WriteLine("UPDATEs failed to install do it manually");
                }
            }
            else
            {
                Console.WriteLine("The computer that this script was executed is up to date");
            }

        }
        public static void EnableUPDATEServices()
        {
            IAutomaticUPDATEs UPDATEs = new AutomaticUPDATEs();
            if (!UPDATEs.ServiceEnabled)
            {
                Console.WriteLine("Not all UPDATEs services where enabled. Enabling Now" + UPDATEs.ServiceEnabled);
                UPDATEs.EnableService();
                Console.WriteLine("Service enable success");
            }


        }

    }
}

Запуск наступного сценарію допоможе мені визначити конфігурацію WUA

'---------------------START-----------------------

' Einstellungen für die automatischen UPDATEs
' http://www.wsus.de/
' Version 1.05.04.1
' Translated quick and dirty into English Marco Biagini
' [email protected]
'--------------------------------------------
On Error Resume Next

Set objWshNet = CreateObject("Wscript.Network")

const HKCU = &H80000001
const HKLM = &H80000002

strDefComputer = lcase(objWshNet.ComputerName)

Set oArgs = WScript.Arguments
If oArgs.Count = 0 Then
 strComputer = InputBox("Please enter the name or IP address of the Computer that you want to check WSUS settings", "Automatic UPDATEs", strDefComputer)
Else
 strComputer = oArgs(0)
End If

If strComputer = "" Then
 WScript.Quit
End if

strComputer = lcase(strComputer)
if left(strComputer,2)="\\" then
 strComputer=right(strComputer,(len(strComputer)-2))
end if

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

If Err.Number <> 0 Then
 msgbox "Unable to connect to:" & VBCRLF & VBCRLF & "     " & strComputer & VBCRLF, vbCritical, "Communication Error"
 WScript.Quit
End If

Resultmsg = "**** Results of WUA Settings ****" & VBCRLF & VBCRLF

strMsg = "No Auto UPDATE:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "NoAutoUPDATE"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAutoUPDATE(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF & VBCRLF
End If

strMsg = "Use WU Server:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "UseWUServer"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetUseWUServer(dwValue) & VBCRLF

 If dwValue = "1" Then
  strMsg = "  - WSUS Server:  "
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE"
  strValueName = "WUServer"
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
   Resultmsg = Resultmsg & strMsg & strValue & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF
  End If

  strMsg = "  - WU Status Server:  "
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE"
  strValueName = "WUStatusServer"
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
   Resultmsg = Resultmsg & strMsg & strValue & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF
  End If
 Else
  Resultmsg = Resultmsg & VBCRLF
 End If
Else
 Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF
 Resultmsg = Resultmsg & "  - Client configured to receive UPDATEs from windowsUPDATE.microsoft.com" & VBCRLF
End If

strMsg = "  - TargetGroup:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE"
strValueName = "TargetGroup"
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
  Resultmsg = Resultmsg & strMsg & strValue & VBCRLF & VBCRLF
 Else
  Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF & VBCRLF
End If

strMsg = "AU Options:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "AUOptions"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF

 If dwValue = "4" Then
  strMsg = "  - Scheduled Install Day:  "
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
  strValueName = "ScheduledInstallDay"
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
   Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF
  End If

  strMsg = "  - Planned Installation Time:  "
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
  strValueName = "ScheduledInstallTime"
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
   Resultmsg = Resultmsg & strMsg & dwValue &":00 - 24 hours 4:00 is 4 AM, 16:00 is 4 PM" & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF
  End If
 Else
   Resultmsg = Resultmsg & VBCRLF
 End If

Else
 Resultmsg = Resultmsg & strMsg & "Value is not configured" & VBCRLF
 strMsg = "  - Benutzerdefinierte Einstellung:  "
 strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUPDATE\Auto UPDATE"
 strValueName = "AUOptions"
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF

  If dwValue = "4" Then
   strMsg = "    - ScheduledInstallDay:  "
   strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUPDATE\Auto UPDATE"
   strValueName = "ScheduledInstallDay"
   If RegValueExists(strKeyPath, strValueName) Then
    oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
    Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF
   Else
    Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF
   End If

   strMsg = "    - ScheduledInstallTime:  "
   strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUPDATE\Auto UPDATE"
   strValueName = "ScheduledInstallTime"
   If RegValueExists(strKeyPath, strValueName) Then
    oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
    Resultmsg = Resultmsg & strMsg & dwValue &":00" & VBCRLF
   Else
    Resultmsg = Resultmsg & strMsg & "Automatic UPDATEs are not configured" & VBCRLF
   End If
  Else
    Resultmsg = Resultmsg & VBCRLF
  End If

 Else
  Resultmsg = Resultmsg & strMsg & "Not configured" & VBCRLF
 End If
End If

strMsg = "  - NoAUShutdownOption:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "NoAUShutdownOption"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAUShutdownOption(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF & VBCRLF
End If

strMsg = "AutoInstallMinorUPDATEs:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "AutoInstallMinorUPDATEs"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetAutoInstallMinorUPDATEs(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Value is not configured" & VBCRLF & VBCRLF
End If

strMsg = "DetectionFrequency:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "DetectionFrequency"
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg &"Every " & dwValue &" Hours to search for UPDATEs"& VBCRLF
 Else
   Resultmsg = Resultmsg & strMsg & "Value is not configured"& VBCRLF
 End If

strMsg = "RebootRelaunchTimeout:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "RebootRelaunchTimeout"
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & dwValue &" Minutes to wait until system restart"& VBCRLF
 Else
   Resultmsg = Resultmsg & strMsg & "Value is not configured" & VBCRLF
 End If

strMsg = "RebootWarningTimeout:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "RebootWarningTimeout"
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & dwValue &" Minutes wait until system restart"& VBCRLF
 Else
   Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF
End If

strMsg = "NoAutoRebootWithLoggedOnUsers:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "NoAutoRebootWithLoggedOnUsers"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAutoReboot(dwValue) & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Value not configured" & VBCRLF
 Resultmsg = Resultmsg & "  - Default: User will be presented with a 5 minutes countdown" & VBCRLF
End If

strMsg = "RescheduleWaitTime:  "
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUPDATE\AU"
strValueName = "RescheduleWaitTime"
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 If dwValue = "0" Then Resultmsg = Resultmsg & strMsg & "Value not configured: " & dwValue & VBCRLF & VBCRLF End If
 If dwValue = "1" Then Resultmsg = Resultmsg & strMsg & dwValue &" Minute" & VBCRLF & VBCRLF End If
 If dwValue > "1" and dwValue < "61" Then Resultmsg = Resultmsg & strMsg & dwValue &" Minutes" & VBCRLF & VBCRLF End If
 If dwValue > "60" Then Resultmsg = Resultmsg & strMsg & "Invalid Value" & dwValue & VBCRLF & VBCRLF End If
Else
 Resultmsg = Resultmsg & strMsg & "Not Configured" & VBCRLF & VBCRLF
End If


Resultmsg = Resultmsg & "http://www.wsus.de" & VBCRLF & "Die Infoseite zu Windows Server UPDATEs Services"

MsgBox Resultmsg,,strComputer

set oReg = nothing


Function GetNoAutoUPDATE(Index)
 Select Case Index
  Case 0 GetNoAutoUPDATE = "0 - Auto UPDATE applied by GPO"
  Case 1 GetNoAutoUPDATE = "1 - No Auto UPDATE is applied by GPO"
  Case Else GetNoAutoUPDATE = "Invalid Entry"
 End select
End Function

Function GetUseWUServer(Index)
 Select Case Index
  Case 0 GetUseWUServer = "0 - Client is configured to receive UPDATEs from windowsUPDATE.microsoft.com"
  Case 1 GetUseWUServer = "1 - Client is configured to receive UPDATEs from your WSUS Server"
  Case Else GetUseWUServer = "Invalid Entry"
 End select
End Function

Function GetDay(Index)
 Select Case Index
  Case "0" GetDay = "Every Day"
  Case "1" GetDay = "Every Sunday"
  Case "2" GetDay = "Every Monday"
  Case "3" GetDay = "Every Tuesday"
  Case "4" GetDay = "Every Wednesday"
  Case "5" GetDay = "Every Thursday"
  Case "6" GetDay = "Every Friday"
  Case "7" GetDay = "Every Saturday"
  Case Else GetDay = "Invalid Entry"
 End select
End Function

Function GetAUOptions(Index)
 Select Case Index
  Case "0" GetAUOptions = "0"
  Case "1" GetAUOptions = "1 - Deaktiviert in den Benutzereinstellungen"
  Case "2" GetAUOptions = "2 - Notify before download and Install."
  Case "3" GetAUOptions = "3 - Autom. Download, notify before installation."
  Case "4" GetAUOptions = "4 - Autom. Download, install according to GPO settings."
  Case "5" GetAUOptions = "5 - Allow Local Administator installation and manual configuration."
  case Else GetAUOptions = "Invalid Entry"
 End select
End Function

Function GetNoAUShutdownOption(Index)
 Select Case Index
  Case 0 GetNoAUShutdownOption = "0 - 'UPDATEs are being installed and system will be restarted' user ill be notified"
  Case 1 GetNoAUShutdownOption = "1 - 'UPDATEs are being installed and system will be restarted' user will NOT be notified"
  Case Else GetNoAUShutdownOption = "Invalid Entry"
 End select
End Function

Function GetAutoInstallMinorUPDATEs(Index)
 Select Case Index
  Case 0 GetAutoInstallMinorUPDATEs = "0 - Automatic UPDATEs are not immediately installed"
  Case 1 GetAutoInstallMinorUPDATEs = "1 - Automatic UPDATEs are immediately installed"
  Case Else GetAutoInstallMinorUPDATEs = "Invalid Entry"
 End select
End Function

Function GetNoAutoReboot(Index)
 Select Case Index
  Case "0" GetNoAutoReboot = "0 - User Countdown of 5 Minutes"
  Case "1" GetNoAutoReboot = "1 - User will be notified before a system restart"
  case Else GetNoAutoReboot = "Invalid Entry"
 End select
End Function

Function RegValueExists(sRegKey, sRegValue)
  sRegKey = Trim(sRegKey)
  sRegValue = LCase(Trim(sRegValue))
  ' init value
  RegValueExists = False
  If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then
    If Not IsNull(aValueNames) Then
      For i = 0 To UBound(aValueNames)
        If LCase(aValueNames(i)) = sRegValue Then
          RegValueExists = True
        End If
      Next
    End If
  End If
End Function

Function RegKeyExists(sRegKey)
  sRegKey = Trim(sRegKey)
  If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then
    RegKeyExists = True
  Else
    RegKeyExists = False
  End If
End Function

'---------------------END-----------------------
15
Хто написав код C# вище?
додано Автор T.Coutlakis, джерело
Я щойно виявив це: msdn. microsoft.com/en-us/library/windows/desktop/… , але як мені встановити ssManagedServer? Я зараз працюю над цим.
додано Автор hidden, джерело
Ще одна справа, яку я щойно виявив: Коли я роблю: Console.WriteLine (UpdateSearchResult.ServerSelection.ToStrin & zwnj; g ()); результат ssDefault. Що я дізнався, що: ssDefault Використовується тільки IUpdateSearcher. Вказує, що пошуковий дзвінок повинен шукати за замовчуванням на сервері. Сервер за промовчанням, який використовується Агентом оновлення Windows (WUA), співпадає з ssMangagedServer, якщо комп'ютер налаштований на наявність керованого сервера. Якщо комп'ютер не налаштовано на наявність керованого сервера, WUA використовує першу службу оновлення, для якої властивість IsRegisteredWithAU служби IUpdateService встановлено як true
додано Автор hidden, джерело
Чому це так погано!
додано Автор hidden, джерело
Добре питання і самореалізація. Я рекомендую перевести рішення в актуальну відповідь на ваше запитання і позначити його як таку.
додано Автор KP., джерело

1 Відповіді

Я написав просту програму C#, яка витягує всі оновлення з локального сервера, який називається SRV1 , використовував його лише в системах Windows 7. Він використовує ASP.NET 3.5, який за замовчуванням встановлений у Windows 7.

Просто змініть SRV1 у вихідному файлі на вашому локальному сервері Wsus.

Source code can be found here

3
додано
Я завантажив проект, але не бачив жодного коду, який би означав, що все буде завантажено з Wsus.
додано Автор hidden, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug