web-dev-qa-db-fra.com

Exécuter automatiquement un script lorsque je me connecte à Windows

Comment puis-je exécuter automatiquement un script lorsque je me connecte à Windows?

Je voudrais exécuter quelque chose comme ça chaque fois que je me connecte à mon ordinateur:

echo %USERNAME% logged on at %DATE% %TIME% >> log.txt

Un bonus serait de pouvoir exécuter le même script chaque fois que je déverrouille également l'économiseur d'écran.

27
Hallgrim

Vous pouvez créer une tâche planifiée qui s'exécutera lorsque votre ordinateur sera déverrouillé:

  1. Démarrer> Outils d'administration> Planificateur de tâches
  2. volet de gauche: sélectionnez Bibliothèque du planificateur de tâches
  3. volet de droite: cliquez sur Créer une tâche ... (REMARQUE: c’est le seul moyen d’obtenir le déclencheur approprié)
  4. dans la boîte de dialogue Créer une tâche:
    • Onglet Général - donnez un nom à votre tâche
    • Onglet Déclencheurs - cliquez sur Nouveau ... et sélectionnez Au déverrouillage du poste de travail
    • Onglet Action - cliquez sur Nouveau ... puis sur Parcourir ... pour localiser votre script
    • Onglet Conditions - décochez la case Démarrer la tâche uniquement si l'ordinateur est sous tension

Aussi, j'ai modifié le chemin dans le script pour lire

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
18
Jeff

Si vous avez déjà un script:

Pour affecter un script de connexion à un utilisateur ou à un groupe

  • Ouvrez la gestion de l'ordinateur.
  • Dans l'arborescence de la console, cliquez sur Utilisateurs.

Où? Outils système/Utilisateurs et groupes locaux/Utilisateurs

  • Double-cliquez sur l'utilisateur auquel vous souhaitez affecter un script de connexion.
  • Cliquez sur l'onglet Profil.
  • Dans le champ Script d'ouverture de session, entrez le chemin d'accès et le nom du script d'ouverture de session que vous souhaitez affecter à cet utilisateur, puis cliquez sur OK.

Sinon, voici un "HowTo" pratique de Microsoft

Création de scripts de connexion

Vous pouvez utiliser des scripts de connexion pour attribuer des tâches à exécuter lorsqu'un utilisateur ouvre une session sur un ordinateur particulier. Les scripts peuvent exécuter des commandes du système d'exploitation, définir des variables d'environnement système et appeler d'autres scripts ou programmes exécutables. La famille Windows Server 2003 prend en charge deux environnements de script: le processeur de commandes exécute des fichiers contenant des commandes de langage par lots et Windows Script Host (WSH) exécute des fichiers contenant des commandes VBScript (Microsoft Visual Basic Scripting Edition) ou Jscript. Vous pouvez utiliser un éditeur de texte pour créer des scripts de connexion. Certaines tâches couramment effectuées par les scripts d'ouverture de session incluent:

  • Cartographie des lecteurs réseau.
  • Installation et configuration de l'imprimante par défaut d'un utilisateur.
  • Collecte d'informations sur le système informatique.
  • Mise à jour des signatures de virus.
  • Mise à jour du logiciel.
  • L'exemple de script d'ouverture de session suivant contient des commandes VBScript qui utilisent Active Directory
  • ADSI (Service Interfaces) pour effectuer trois tâches courantes en fonction de l'appartenance à un groupe d'utilisateurs:

Il mappe le lecteur H: sur le répertoire de base de l'utilisateur en appelant la méthode MapNetworkDrive de l'objet Network WSH en combinaison avec la propriété UserName de l'objet Network WSH. Il utilise l'objet ADSI IADsADSystemInfo pour obtenir le nom distinctif de l'utilisateur actuel, qui est utilisé pour se connecter à l'objet utilisateur correspondant dans Active Directory. Une fois la connexion établie, la liste des groupes dont l'utilisateur est membre est récupérée à l'aide de l'attribut memberOf de l'utilisateur. La liste à plusieurs valeurs des noms de groupe est jointe en une seule chaîne à l'aide de la fonction Join de VBScript afin de faciliter la recherche de noms de groupes cibles.

Si l'utilisateur actuel est membre de l'un des trois groupes définis en haut du script, le script mappe le lecteur G: de l'utilisateur sur le lecteur partagé du groupe et définit l'imprimante par défaut de l'utilisateur comme étant l'imprimante de groupe. Pour créer un exemple de script de connexion

  • Ouvrez le bloc-notes.
  • Copiez et collez ou tapez ce qui suit:

    Const ENGINEERING_GROUP     = "cn=engineering"
    Const FINANCE_GROUP         = "cn=finance"
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    Set wshNetwork = CreateObject("WScript.Network")
    wshNetwork.MapNetworkDrive "h:",
    "\\FileServer\Users\" & wshNetwork.UserName
    
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" &
    ADSysInfo.UserName)
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Engineering\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\EngLaser"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\Plotter"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Finance\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\FinLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Human Resources\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\HrLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\HrLaser"
    
    End If
    
  • Dans le menu Fichier, cliquez sur Enregistrer sous.

  • Dans Enregistrer dans, cliquez sur le répertoire correspondant au dossier partagé Netlogon du contrôleur de domaine (généralement SystemRoot\SYSVOL\Sysvol\Nomdomaine\Scripts, où Nomdomaine correspond au nom de domaine complet du domaine).
  • Dans Type de fichier, cliquez sur Tous les fichiers.
  • Dans Nom de fichier, tapez un nom de fichier, suivi de .vbs, puis cliquez sur Enregistrer. WSH utilise l'extension .vbs pour identifier les fichiers contenant des commandes VBScript.
22
Ivo Flipse

Le moyen le plus simple auquel je puisse penser serait de le mettre dans un fichier .bat dans votre dossier de démarrage.

Une méthode plus compliquée consisterait à ajouter le fichier de commandes au registre dans

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

clé d'enregistrement.

14
Bruce McLeod

Ce n'est pas nécessaire! Windows a déjà un mécanisme pour enregistrer cela pour vous dans le journal des événements. L'ID d'événement est 4624 (528 sur les systèmes antérieurs à Vista).

2
Aryeh Leib Taurog

Quelqu'un sait si cela peut être utilisé pour fonctionner lorsque l'écran est également verrouillé/déverrouillé?

Il existe un moyen pour Windows 7 et/ou Windows Server 2008.

Utilisez le Planificateur de tâches, créez une nouvelle tâche de base, car le déclencheur utilise "Quand je me connecte".

2
Tomas Tintera

Une autre méthode consiste à créer un fichier de commandes avec les commandes à exécuter. Vous allez ensuite spécifier dans l'éditeur de politique de la machine qu'elle exécute un script de connexion dans le cadre du processus de connexion. Une note rapide est que cette option est uniquement disponible sur XP Pro et non sur la version d'origine.

Didacticiel de l'éditeur de stratégie de groupe ici

2
Axxmasterr