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

27

Comment 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.

Hallgrim
la source
la réponse acceptée est un indice d'octane très élevé - en utilisant votre one-liner, j'offre quelque chose de plus humble (mais efficace) ci-dessous ... ;-)
Jeff

Réponses:

19

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 gauche: sélectionnez Bibliothèque du planificateur de tâches
  3. volet droit: cliquez sur Créer une tâche ... (REMARQUE: c'est le seul moyen d'obtenir le déclencheur correct)
  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 Déverrouillage sur poste de travail
    • Onglet Action - cliquez sur Nouveau ... et cliquez sur Parcourir ... pour localiser votre script
    • Onglet Conditions - décochez Démarrer la tâche uniquement si l'ordinateur est sous tension CA

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

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
Jeff
la source
22

Si vous avez déjà un script:

Pour attribuer un script d'ouverture de session à un utilisateur ou à un groupe

  • Ouvrez 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 d'ouverture de session.
  • 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 attribuer à 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 qui seront effectuées lorsqu'un utilisateur se connecte à 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 Microsoft Visual Basic Scripting Edition (VBScript) ou des commandes Jscript. Vous pouvez utiliser un éditeur de texte pour créer des scripts de connexion. Certaines tâches couramment effectuées par les scripts de connexion 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
  • Interfaces de service (ADSI) pour effectuer trois tâches courantes en fonction de l'appartenance à un groupe d'un utilisateur:

Il mappe le lecteur H: au répertoire de base de l'utilisateur en appelant la méthode MapNetworkDrive de l'objet WSH Network en combinaison avec la propriété UserName de l'objet WSH Network. Il utilise l'objet ADSI IADsADSystemInfo pour obtenir le nom unique de l'utilisateur actuel, qui à son tour 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 en utilisant la fonction Join de VBScript pour faciliter la recherche des noms de groupe cible.

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 au lecteur partagé du groupe et définit l'imprimante par défaut de l'utilisateur comme imprimante de groupe. Pour créer un exemple de script d'ouverture de session

  • Ouvrez le Bloc-notes.
  • Copiez et collez ou saisissez les éléments suivants:

    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 qui correspond au dossier partagé Netlogon du contrôleur de domaine (généralement SystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scripts où DomainName est le 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 qui contiennent des commandes VBScript.
Ivo Flipse
la source
Toujours agréable de voir que quelqu'un a aimé la réponse :-D
Ivo Flipse
je veux presque tourner cette CW et l'étiqueter faq :)
quack quixote
Soyez mon invité @quack ;-) FAQ pour quoi en fait?
Ivo Flipse
14

La façon la plus simple à laquelle je peux penser serait de mettre cela dans un fichier .bat dans votre dossier de démarrage.

Une manière plus compliquée serait d’ajouter le fichier de commandes au registre dans le

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

clé d'enregistrement.

Bruce McLeod
la source
8
Si vous voulez exécuter quand les journaux d'utilisateur, vous devez le mettre dans les tous le dossier Utilisateurs ( % allusersprofile% / Menu Démarrer \ Programmes \ Démarrage ), ou faire une entrée dans la section Exécution de la LocalMachine reg ruche: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run )
Treb
J'exécute un .exe de cette manière, mais y a-t-il un moyen de le faire fonctionner silencieusement? Sans ouvrir et garder ouvert un cmd?
bzupnick
2

Une autre bonne méthode consiste à créer un fichier de commandes avec les commandes que vous souhaitez y exécuter. Ensuite, vous spécifierez dans l'éditeur de stratégie sur la machine qu'il exécutera un script de connexion dans le cadre du processus de connexion. Une note rapide est que cette option n'est disponible que sur XP Pro et non sur la version domestique.

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

Axxmasterr
la source
2

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".

Tomas Tintera
la source
Vous ne pouvez pas utiliser une tâche de base si vous souhaitez que le déclencheur soit "Déverrouillage sur poste de travail"
Jeff
2

Ce n'est pas nécessaire! Windows dispose déjà d' 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).

Aryeh Leib Taurog
la source