IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Récupérer l'état de Windows update


Sujet :

Delphi

  1. #1
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut Récupérer l'état de Windows update
    Bonjour,

    Quand je lance mon application je voudrais prévenir l'utilisateur si Windows Update est paramétré pour rebooter le PC automatiquement après une mise à jour.
    Comment lire cette information dans windows ? Je n'arrive pas à trouver cette information.

    merci
    Franck

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 705
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    sans pouvoir vérifier, il semblerait qu'il existe des clés dans la base de registre en cas de Update (dommage je viens de la faire sur mon W10)
    j'ai trouvé ceci en première recherche avec Google (mots clés : api windows update pending)
    'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
    'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
    (HKLM=HKEY_LOCAL_MACHINE)
    ces clés étant "volatiles" il faut vérifier ces indications sur un poste dans cet état et de plus est-ce valable pour chaque version ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 942
    Billets dans le blog
    6
    Par défaut
    Il y a une API qui permet de récupérer certains renseignements, notamment si un Reboot est requis, suite à l'installation d'une MàJ.
    Mais je n'ai pas trouvé qu'elle puisse indiquer si le PC est paramétré pour un Reboot automatique.
    En y repensant, d'ailleurs, est-ce possible ? Ce paramétrage existe-t-il ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    J'ai trouvé quelque chose dans la base de registre ici (pour windows 10) qui semble correspondre aux données de configuration:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows\WindowsUpdate

    Cette clé contient les champs suivants:
    - AUOptions (=2)
    - AutoInstallMinorUpdates (=1)
    - IncludeRecommendedUpdates (=1)
    - NoAutoUpdate (=0)
    - ScheduledInstallDay (=0)
    - ScheduledInstallTime (=3)

    Je n'en connais pas la signification.
    Mais dans windows 7 la clé AU est vide !! donc il y a autre chose.


    Pour répondre à ta question, Oui, il y a un mode qui fait que le PC peut rebooter automatiquement après une mise à jour critique sans demander l'accord de l'opérateur (constaté sur une machine, c'est pourquoi je voudrais mettre ça en place) et c'est le mode par défaut me semble-t-il.


    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 705
    Billets dans le blog
    65
    Par défaut
    Re,
    comme le semble indiqué l'article que j'ai lu (désolé je n'ai pas pris le lien) ce genre de clé disparait après que le reboot soit fait

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 942
    Billets dans le blog
    6
    Par défaut
    lire ici, peut-être, au moins pour des pistes : https://technet.microsoft.com/en-us/...(v=ws.10).aspx
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Re,
    comme le semble indiqué l'article que j'ai lu (désolé je n'ai pas pris le lien) ce genre de clé disparait après que le reboot soit fait
    Oui je l'ai constaté pour la clé "RebootRequired". Elle apparait dans la base lorsque le reboot est demandé par le système.
    Mais j'aimerai bien voir où se trouve le choix qui est dans windows 7 (version anglaise):
    - Install updates automatically (recommanded)
    - Download updates but let me choose whether to install them
    - Check for updates but let me choose whether to download and install them
    - Never check for updates (not recommended)

  8. #8
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    J'ai finalement trouvé, voici le code que j'ai pu tester sur les systèmes suivants:
    - WIN XP 32 bits
    - WIN 7 32 bits et 64 bits
    - WIN10 64 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    //------------------------------------------------------------------------------------------------------------------------------
    Procedure TFormApp.CheckWindowsUpdate;
    // Sur Windows 10: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU\ puis AUOptions
    // ------------------
    // Valeur de AUOptions:
    // 1 = Never
    // 2 = Notify before download = Check for updates but let me choose whether to download and install them
    // 3 = Automatically download and notify of installation = Download updates but let me choose whether to install them
    // 4 = Automatic download and scheduled installation. (Only valid if values exist for ScheduledInstallDay and ScheduledInstallTime.) = Install updates automatically.
    // 5 = Automatic Updates is required, but end users can configure it.
    // ------------------
     
    Const
     KEY_WOW64_64KEY = $0100;
     CleWIN7  = 'SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update';
     CleWIN10 = 'SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU';
    var
     Key   : HKey;
     Pcode : array[0..255] of char;
     Taille: cardinal;
     li : longint;
     flag: REGSAM;
     wow64: BOOL;
     AUOptions : byte;
    //----------------------------------
    Function ReadOptions:byte;
    Begin
      result := 0;
      li := RegQueryValueEx(Key, Pchar('AUOptions'), nil, nil, @Pcode, @Taille);
      if (li=ERROR_SUCCESS)	then result:=byte(Pcode[0]);
    End;
    //----------------------------------
    Begin
      flag := 0;
      wow64 := false;
      IsWow64Process(GetCurrentProcess(), @wow64);
      if wow64 then flag := KEY_WOW64_64KEY;
     
      taille:=sizeof(Pcode);                           // KEY_QUERY_VALUE
      AUOptions := 0;
      if (AUOptions=0) and (RegOpenKeyEx(HKEY_LOCAL_MACHINE,Pchar(CleWin7), 0, KEY_QUERY_VALUE or flag, Key) = ERROR_SUCCESS) then AUOptions := ReadOptions;
      if (AUOptions=0) and (RegOpenKeyEx(HKEY_LOCAL_MACHINE,Pchar(CleWIN10),0, KEY_QUERY_VALUE or flag, Key) = ERROR_SUCCESS) then AUOptions := ReadOptions;
      if (AUOptions>=4) then
      Begin
         MyLog.LogEvent('',-1,li_OS_INFO, LOG_GENERAL, EL_WARNING,'Please check windows update because the computer may reboot automatically');
      End;
    End;
    //------------------------------------------------------------------------------------------------------------------------------

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 705
    Billets dans le blog
    65
    Par défaut
    Bonjour, pourquoi ne pas le proposer en FAQ ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Windows Update impossible, problème installation WGA
    Par iubito dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/12/2005, 09h58
  2. [VB6] Récupérer les états Access ?
    Par Commodore dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 16/11/2005, 12h32
  3. Récupérer l'état d'un processus créé avec CreatProcess
    Par Didier L dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/09/2005, 01h39
  4. comment récupérer l'état d'un capteur?
    Par r0d dans le forum Périphériques
    Réponses: 8
    Dernier message: 17/08/2005, 21h13
  5. Réponses: 5
    Dernier message: 22/12/2004, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo