Nano Hash - криптовалюты, майнинг, программирование

Как надежно проверить, включен ли Центр обновления Windows с помощью С#?

Я попытался проверить, включен ли Центр обновления Windows. Я добавил ссылку на c:\windows\system32\wuapi.dll в Windows 7 x64 Ultimate и написал этот код

using WUApiLib;
public Boolean IsWindowsUpdateEnabled()
{
    var updates = new AutomaticUpdatesClass();
    return updates.ServiceEnabled;
}

Код не собирается. Я получаю следующую ошибку:

Ошибка 1. Для типа "WUApiLib.AutomaticUpdatesClass" не определены конструкторы
Ошибка 2. Тип взаимодействия "WUApiLib.AutomaticUpdatesClass" не может быть внедрен. Вместо этого используйте соответствующий интерфейс.
Ошибка 3 "WUApiLib.AutomaticUpdatesClass" не содержит определения для "ServiceEnabled" и не может быть найден метод расширения "ServiceEnabled", принимающий первый аргумент типа "WUApiLib.AutomaticUpdatesClass" (вам не хватает? директива using или ссылка на сборку?)

31.10.2012

  • Вы пытались использовать wuapi.dll, расположенный в C:\Windows\SysWOW64? 01.11.2012
  • @SuperOli: если он на 32 битах, он будет автоматически перенаправлен туда. 01.11.2012
  • См. Определение текущей версии WUA 01.11.2012
  • Когда я добавляю ссылку через VS 2010, я вижу следующий путь: c:\windows\SysWowo64\wuapi.dll на вкладке COM. Но выдает ту же ошибку. Я также пытался добавить ссылку вручную, перейдя к c:\windows\system32\wuapi.dll, но результат тот же. У меня есть V2 Wuapi.dll, но я думаю, что это не должно быть проблемой. Я видел, как люди делают то же самое для версии 1 dll, которая находится в Windows XP Sp2, но я ориентируюсь только на Windows 2008 или более поздние ОС. 01.11.2012

Ответы:


1

В списке ссылок проекта Visual Studio найдите ссылку WUApiLib и измените ее «Типы встраивания взаимодействия» на «False».

31.10.2012
  • +1 за идею. попробуем ваше решение и опубликуем результаты здесь. Спасибо. 01.11.2012
  • Спасибо. Ваше решение сработало. Не могли бы вы ответить еще на один мой вопрос, пожалуйста? 1. Почему если установить для настроек Embed значение False, все заработает? Спасибо за ответ и буду очень признателен, если вы напишите несколько строк, чтобы ответить на мои нубские вопросы. Спасибо 01.11.2012

  • 2

    Возможно, вы могли бы запросить реестр, чтобы увидеть?

    public string Read(string KeyName)
    {
        // Opening the registry key
        RegistryKey rk = baseRegistryKey ;
        // Open a subKey as read-only
        RegistryKey sk1 = rk.OpenSubKey(subKey);
        // If the RegistrySubKey doesn't exist -> (null)
        if ( sk1 == null )
        {
            return null;
        }
        else
        {
            try 
            {
                // If the RegistryKey exists I get its value
                // or null is returned.
                return (string)sk1.GetValue(KeyName.ToUpper());
            }
            catch (Exception e)
            {
                // AAAAAAAAAAARGH, an error!
                ShowErrorMessage(e, "Reading registry " + KeyName.ToUpper());
                return null;
            }
        }
    }
    

    источник

    И места для поиска:

    http://www.windowsnetworking.com/articles_tutorials/Registry-Keys-Tweaking-Windows-Update-Part1.html

    HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU...

    Первый из этих ключей — ключ AUOptions. Этому значению DWORD может быть присвоено значение 2, 3, 4 или 5. Значение 2 указывает, что агент должен уведомлять пользователя перед загрузкой обновлений. Значение 3 указывает, что обновления будут загружаться автоматически, а пользователь будет уведомлен об установке. Значение 4 указывает, что обновления должны загружаться и устанавливаться автоматически по расписанию. Чтобы этот параметр работал, также должны быть установлены ключи ScheduledInstallDay и ScheduledInstallTime. Я расскажу больше об этих ключах позже. Наконец, значение 5 указывает на то, что автоматические обновления требуются, но могут быть настроены конечными пользователями.

    И Т. Д.

    Хотя может быть по-другому, если настройки выполняются групповой политикой.

    Дополнительная информация здесь: http://support.microsoft.com/kb/328010.

    31.10.2012
  • +1 за подход. Будет ли это работать на 32- и 64-битных версиях Windows 2008 R2 и более поздних ОС? Могу ли я положиться на это в системах Windows 2008, 2008 R2 2012 и Windows 7 x86 и x64 bit. Извините, я не уточнил это в своем первоначальном вопросе. Но суть я улавливаю. Спасибо. 01.11.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..