Histoires de BureauIntroduction à PsTools

Wes Miller

Télécharger le code de cet article: MillerTheDesktopFiles2007_03.exe (150KB)

Jusqu’à l’année dernière, j’ai travaillé chez Winternals Software, dont Microsoft a fait l’acquisition en juillet 2006. Winternals vendait des logiciel commerciaux, mais les fondateurs de la société, Mark Russinovich et Bryce Cogswell, possédaient également une société distincte nommée Sysinternals, qui distribuait de nombreux outils sous forme de graticiels. Certains de ces logiciels gratuits ont

évolué pour devenir des composants du Pack de l’administrateur Winternals. Mark et Bryce ont également conclu des accords de licence avec des sociétés cherchant à utiliser ces outils hors du cadre typique des termes de licence des logiciels gratuits.

L’un de mes outils préférés de la bibliothèque de Sysinternals est PsTools, une panoplie d’outils que vous trouverez désormais à l’adresse microsoft.com/technet/sysinternals/utilities/pstools.mspx. Mark a baptisé ces outils d’après l’utilitaire de listing de processus d’UNIX, ps. Comme indiqué sur le site de téléchargement des outils, il existe des outils de ligne de commande Windows® intégrés qui peuvent exécuter des fonctions identiques à celles de ces outils. Cependant, outre d’importantes fonctionnalités uniques, la différence majeure réside dans le fait que la suite PsTools peut être utilisée localement ou à distance (à la condition que les systèmes distants soient correctement configurés, bien sûr). Qui plus est, la procédure permettant de les exécuter à distance est presque aussi simple que pour leur exécution locale.

La suite PsTools inclut plusieurs applications individuelles, répertoriées à la figure 1. Comme avec le reste des utilitaires de Sysinternals, il n’y a pas de programme d’installation, seulement des applications. Copiez-les simplement dans un dossier de votre chemin et démarrez !

Figure 1 Utilitaires PsTools

Outil Description
PsExec Permet d’exécuter des processus dans tout contexte utilisateur.
PsFile Affiche les fichiers ouverts sur un système distant.
PsGetSid Affiche l’Identificateur de sécurité Windows (SID) d’un ordinateur ou d’un utilisateur.
PsInfo Fournit des informations sur un système Windows.
PsKill Arrête des processus en fonction de leur nom ou de leur identificateur de processus.
PsList Fournit des informations détaillées sur les processus en cours d’exécution.
PsLoggedOn Affiche tous les utilisateurs ayant ouvert une session localement, de même que tous les utilisateurs partageant des ressources à distance.
PsLogList Vidange les enregistrements du journal d’événements Windows.
PsPasswd Modifie les mots de passe des comptes utilisateur.
PsService Affichage et contrôle des services Windows.
PsShutdown Arrête, redémarre, met en veille ou en veille prolongée un ordinateur.
PsSuspend Interrompt des processus en cours d’exécution.

Vous remarquerez peut-être que certaines de ces fonctionnalités (en particulier PsLogList) pourraient être obtenues à l’aide de Windows Management Instrumentation (WMI) et de l’écriture de scripts complexes. L’intérêt de la suite PsTools est toutefois que chaque utilitaire a été conçu pour accomplir une tâche spécifique, simplement et facilement.

Je vais vous détailler chaque outil et vous donner un exemple simple des raisons et des méthodes de son utilisation. Toutefois, j’offrirai tout d’abord une courte présentation du fonctionnement des outils et du genre de conditions requises devant être vérifiées pour que ceux-ci fonctionnent.

Comment fonctionnent les outils ?

Les outils fonctionnent généralement de la même manière. Sur le système hôte, lancez l’outil PsTool de votre choix. Bien que beaucoup puissent être exécutés localement, vous vous apercevrez que ces outils sont particulièrement utiles lorsqu’ils sont exécutés pour un ou plusieurs systèmes distants à la fois. PsExec est une exception particulière qui me vient à l’esprit, comme vous verrez dans mon exemple ci-dessous. À l’aide du paramètre de ligne de commande que vous fournissez, l’utilitaire se copie sur le partage administratif du système distant, qui est l’équivalent de %SystemRoot% (répertoire de Windows) sur le système distant.

Une fois copié dans le répertoire distant, l’application se lance et installe un service Windows. Ce service Windows exécute la tâche que vous avez demandée, en utilisant les informations d’authentification que vous avez fournies au moment du lancement. Si une interface utilisateur d’utilisateur final est requise par un outil spécifique sur le système client, ce service lance alors un fichier binaire supplémentaire dans le contexte de l’utilisateur. Souvenez-vous que les services ne peuvent pas démarrer directement d’interfaces utilisateur interactives. Le service communique toutes les informations nécessaires en retour à la console qui l’a lancé. Pour terminer, le service se désinstalle.

Comme vous pouvez le voir, les outils sont puissants et autonomes. Bien qu’ils impliquent plusieurs processus et fichiers binaires, en tant qu’utilisateur vous n’aurez pas à vous soucier de cela : vous aurez simplement à exécuter l’outil de votre choix et il fonctionnera.

Afin d’utiliser les outils, la configuration suivante est requise : Windows NT®, Windows 2000, Windows XP ou Windows Server® 2003 (les versions x86 et x64 de Windows sont prises en charge, mais pas les versions Itanium) ; partage réseau administratif par défaut activé sur le système distant sur lequel vous exécutez les outils (admin$) ; ports du Partage de fichiers et d’imprimantes ouverts sur le système distant (que vous utilisiez le Pare-feu Windows, le Pare-feu de connexion Internet ou tout autre pare-feu).

PsExec

PsExec est mon préféré parmi ces outils, et probablement pas pour la raison à laquelle vous pensez. Depuis près de deux ans, j’ouvre mes sessions en tant que non-administrateur sur les systèmes que j’exécute comme utilisateur et non en tant qu’administrateur. Je dispose d’un script nommé run.vbs que j’utilise pour exécuter les applications en tant qu’administrateur local (elles pourraient aussi bien être exécutées en tant qu’utilisateur quelconque). La figure 2 détaille le contenu du script (qui est également disponible sur le site de TechNet Magazine à l’adresse technetmagazine.com/code07.aspx). Le script suppose que les outils PsTools sont situés dans le chemin de la variable système Path.

Figure 2 Run.vbs

SET WshShell = WScript.CreateObject("WScript.Shell")
SET WshSysEnv = WshShell.Environment("SYSTEM")
SET FSO = CreateObject("Scripting.FileSystemObject")
IF WScript.Arguments.Count <> 0 Then
    FOR EACH arg IN WScript.Arguments
        iArgCount = iArgCount + 1
        strCmdArg = (arg)
        strCmdArray = Split(strCmdArg, " ", 2, 1)
        IF iArgCount = 1 THEN
        strExe = strCmdArray(0)
        ELSEIF iArgCount = 2 THEN
        strRun = strCmdArray(0)
        ELSE
        strParams = strParams&" "&strCmdArray(0)
        END IF
    NEXT
END IF
'/t:0A && title ***** Admin ***** 
        strExt = LCase(Right(strExe, 3))

IF strExt <> "exe" AND strExt <> "bat" AND strExt <> "cmd" THEN
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD  cmd /c start "&strExe&"
    "&strRun&" "&strParams, 0, FALSE
ELSE
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD "&strExe&" "&strRun&"
    "&strParams, 0, FALSE
END IF

    SET WshShell = NOTHING
    SET WshSysEnv = NOTHING
    SET FSO = NOTHING

Ce script simple est un exemple d’utilisation de PsExec avec la fonctionnalité que Mark a ajoutée lorsque nous travaillions sur notre produit Protection Manager chez Winternals : la possibilité pour un utilisateur restreint de fournir des informations d’authentification aux autorisations plus grandes pour lancer PsExec localement. L’utilisation la plus courante de PsExec, bien sûr, est son exécution à distance pour, par exemple, exécuter un utilitaire qui ne fournit pas sa propre infrastructure d’accès distant, d’écriture de script ou d’automatisation. Les fonctionnalités essentielles de PsExec comprennent la possibilité de copier un fichier binaire vers les systèmes distants sur lesquels il doit être exécuté, ainsi que la possibilité de choisir l’affinité avec certains processeurs. Une autre fonctionnalité pratique de PsExec consiste à pouvoir l’exécuter simultanément avec un script sur plusieurs ordinateurs en fournissant un fichier de script.

Voici l’utilisation simplifiée de PsExec :

PsExec \\computer -u username -p password command

Vous pouvez étendre cette utilisation à l’aide des commutateurs répertoriés à la figure 3.

Figure 3 Commutateurs de PsExec

Commutateur Description
-a Spécifie l’affinité avec certains processeurs.
-c Indique si l’application doit être copiée sur le système distant.
-d Spécifie de ne pas attendre que le processus se termine avant de quitter (pas d’attente de message de réussite ou d’échec).
-e Effectue le chargement à l’aide du profil de compte spécifié.
-f Copie l’application, même si elle existe sur le système distant. Vérifie que vous exécutez la version la plus récente (ou une version spécifique).
-i Exécute l’application de manière interactive sur le système distant (requis si vous voulez qu’un utilisateur final voie une interface utilisateur depuis l’application).
-l Exécute l’application en tant qu’utilisateur restreint. Supprime le jeton du groupe Administrateurs et réduit les privilèges de processus au niveau auquel ils correspondraient pour un membre du groupe Utilisateurs. Pratique pour exécuter des applications à haut risque orientées Internet avec des privilèges minimaux.
-n Spécifie le délai d’attente avant l’échec de la connexion aux ordinateurs distants.
-priority Exécute le processus à la priorité spécifiée. Spécifie en fait comment Windows doit définir la priorité de processus pour une tâche donnée (-low, -belownormal, -abovenormal, -high ou -realtime).
-s Exécute le processus en utilisant le compte System (pratique pour exécuter Regedit pour l’accès à des clés du Registre avec privilèges).
-v Copie l’application, uniquement si celle qui est copiée est plus récente.
-x Affiche l’interface utilisateur du bureau sécurisé Winlogon (fonctionne uniquement sur le système local).
@file Exécute la commande pour tous les ordinateurs spécifiés dans le fichier texte.

PsFile

PsFile est un outil plus limité que PsExec. Il est utilisé pour identifier, sur le système distant, quels sont les fichiers qui sont ouverts et qui les a ouverts. Ceci peut être utile si vous voulez effectuer un suivi des fichiers qui sont ouverts avant de redémarrer un serveur. Si vous devez déterminer quel utilisateur a verrouillé le fichier et empêche ainsi peut-être sa modification ou sa suppression, vous pouvez l’avertir manuellement ou fermer ce fichier à l’aide de PsFile. Utilisez PsFile de la manière suivante :

PsFile \\computer -u username -p password 

Ceci renvoie simplement une liste des handles des fichiers ouverts sur le système distant. Au delà de l’utilisation standard, vous pouvez également ajouter un paramètre Id à l’instruction pour spécifier le nom du fichier que vous voulez fermer ou à propos duquel vous recherchez des informations. Vous pouvez également inclure le commutateur -c, qui ferme le fichier que vous avez identifié avec le paramètre Id.

PsGetSid

PsGetSid est également un outil très spécifique. Il vous donnera l’Identificateur de Sécurité (SID) d’un ordinateur, d’un utilisateur ou d’un groupe. Ceci peut être utile si vous voulez vous assurer que les systèmes de votre domaine n’ont pas de doublons parmi leurs SID ou pour vérifier simplement les SID de tous les utilisateurs ou groupes d’un système. Utilisez PsGetSid comme ceci :

PsGetSid \\computer -u username -p password account

Notez que account peut faire référence à un utilisateur, un ordinateur ou un groupe. Bien que la syntaxe de PSGetSid soit simple, deux paramètres supplémentaires sont également disponibles. Le paramètre SID correspond au compte (groupe ou ordinateur) auquel un SID spécifique a été attribué et @file exécute la commande sur tous les ordinateurs répertoriés dans le fichier texte spécifié.

PsInfo

PsInfo est utilisé pour fournir des informations système détaillées. Cet utilitaire revêt bien entendu un intérêt primordial lorsqu’il est utilisé dans un script pour plusieurs systèmes distants, le résultat étant redirigé vers un fichier (tel qu’un fichier CSV pouvant être ouvert avec Excel® ou un programme de base de données). Notez que cet utilitaire fonctionne selon un concept important qui est différent de la plupart des autres outils : Si vous ne fournissez pas de nom d’ordinateur, PsInfo tentera par défaut d’interroger tous les ordinateurs du domaine. Utilisez PsInfo comme ceci :

PsInfo  \\computer -u username -p password 

Bien que la syntaxe soit simple, des commutateurs et des paramètres supplémentaires sont également disponibles, comme indiqué à la figure 4.

Figure 4 Commutateurs de PsInfo

Commutateur Description
-h Affiche toutes les mises à jour de Windows.
-s Affiche toutes les applications installées sur le système.
-d Affiche les informations concernant le disque/volume du système.
-c Redirige les résultats dans un fichier au format CSV.
-t Spécifie un séparateur de fichier CSV différent de la valeur par défaut (\t).
Filter Affiche uniquement les données qui correspondent à un filtre donné.
@file Exécute la commande pour tous les ordinateurs répertoriés dans le fichier texte spécifié.

PsKill

PsKill est un utilitaire incontournable pour mettre fin à des processus sur un système local ou distant. Son utilisation est très simple et il permet d’arrêter rapidement un processus ainsi que tous ses processus enfants. L’utilisation de PsKill est très similaire à celle des autres outils que j’ai abordés.

PsKill -t \\computer -u username -p password process id | process name

Notez que vous pouvez spécifier l’ID ou le nom de processus du processus que vous voulez arrêter.

PsList

Je n’utilise pas beaucoup PsList car je lui préfère Process Explorer (voir microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx pour plus d’informations). Mais puisqu’il n’existe pas de version utilisable à distance de Process Explorer, PsList offre une alternative raisonnable pour certaines fonctionnalités clés offertes par Process Explorer. PsList est en fait une liste utilisable à distance des processus s’exécutant sur un système distant.

L’utilisation de PsList est assez simple :

PsList \\computer -u username -p password account

Comme avec les autres outils, le paramètre de compte peut correspondre à un utilisateur, un ordinateur ou un groupe. Les paramètres supplémentaires sont indiqués à la figure 5.

Figure 5 Commutateurs de PsList

Commutateur Description
-t Affiche les informations de niveau thread.
-m Fournit des informations détaillées sur la mémoire pour chaque processus.
-x Affiche les informations concernant le processus, la mémoire et le thread.
-t Affiche les informations sous la forme d’une arborescence de processus (telle que l’arborescence de Process Explorer).
-s [n] S’exécute en mode de Gestionnaire des tâches pendant le nombre de secondes spécifié. Ceci permet un affichage en quasi-temps réel des informations concernant les processus distants.
-r [n] Spécifie la fréquence d’actualisation (en secondes) lors de l’exécution en mode Gestionnaire des tâches.
name Affiche des informations sur les processus qui commencent par le nom spécifié.
-e Recherche une correspondance exacte du nom de processus.
pid Affiche des informations sur un processus spécifique.

PsList est puissant, tout en étant facile à utiliser et, sans recourir au Bureau à distance, vous permet de voir les processus distants avec un niveau de détail poussé. Grâce à ces informations, vous pouvez alors passer à PsKill ou à PsSuspend si, par exemple, un processus nécessite une intervention.

PsLoggedOn

Le principe sur lequel s’appuie PsLoggedOn est évident. L’utilitaire affiche qui a ouvert une session sur le système. Il peut s’agir d’ouvertures de session locales (interactives) ou sur des partages réseau. Comme avec PsFile, cette possibilité peut être utile pour déterminer qui utilise un serveur dont vous devez effectuer la maintenance. Son utilisation est très simple :

PsLoggedOn \\computer

PsLoggedOn a seulement deux paramètres facultatifs : -l affiche uniquement les ouvertures de session locales (pas les ouvertures de session réseau) et -x exclut l’heure de connexion.

Bien que simple, PsLoggedOn vous permet de facilement consulter des informations pour lesquelles vous devriez généralement fouiller à plusieurs emplacements de Windows.

PsLogList

PsLogList est généralement parmi les utilitaires les plus utiles. Il s’agit d’un outil de vidange des journaux d’événements Windows dans un format de fichier texte qui peut être ensuite utilisé par les analyseurs de journaux, les bases de données ou tout autre programme de votre choix. Son avantage principal est qu’il convertit les entrées de journaux d’événements de leur format binaire vers un autre format pouvant être facilement transformé ou peut être automatisé. (Bien entendu, dans Windows Vista™, les journaux d’événements sont disponibles en mode natif au format XML, mais il s’agit d’un autre sujet, que nous aborderons une autre fois.)

Utilisez PsLogList comme ceci :

PsLogList \\computer -u username -p password

Des commutateurs et des paramètres supplémentaires sont également disponibles, comme indiqué à la figure 6.

Figure 6 Commutateurs de PsLogList

Commutateur Description
-a Vidange uniquement les événements survenus après la date spécifiée.
-b Vidange uniquement les événements survenus avant la date spécifiée.
-c Vide le journal des événements de manière permanente après la vidange de résultat voulu.
-d Affiche uniquement les informations correspondant au nombre de jours spécifié.
-e Exclut les événements avec l’ID d’événement spécifié (vous pouvez en spécifier jusqu’à 10).
-f Filtre les types d’événements (avertissements, erreurs, etc.).
-g Exporte le journal d’événements sous forme de fichier EVT (nécessite le commutateur -c).
-h Affiche uniquement les informations correspondant au nombre d’heures spécifié.
-l Effectue la vidange depuis le fichier EVT spécifié.
-m Affiche uniquement les informations correspondant au nombre de minutes spécifié.
-n Affiche uniquement le nombre spécifié d’événements les plus récents.
-o Affiche uniquement les événements d’une source donnée (-o SRService pour le Service de restauration du système de Windows, par exemple).
-q Exclut les événements d’une source donnée (le contraire de -o).
-r Inverse l’ordre de vidange des événements du journal du plus ancien au plus récent.
-s Répertorie les enregistrements de chaque ligne dans des champs délimités.
-t Spécifie un séparateur différent de la virgule pour la sortie avec -s.
-w Attend l’arrivée de nouveaux événements et effectue une vidange en temps réel. S’applique uniquement au système local.
-x Vidange les données étendues des journaux d’événements.
eventlog Spécifie le journal d’événements à vidanger. Par défaut, il s’agit de System.
@file Exécute la commande pour tous les ordinateurs spécifiés dans le fichier texte.

Les journaux des événements de Windows peuvent constituer un outil de diagnostic puissant, mais il peut être compliqué de mettre les données sous une forme manipulable ou consolidable. PsLogList effectue ce tour de passe.

PsPasswd

PsPasswd est un utilitaire simple et cependant puissant, conçu avec des possibilités similaires à celles de Net.exe, mais avec l’utilisation à distance et l’automatisation à l’esprit.

PsPasswd  \\computer -u username -p password Username Newpassword

Vous pouvez spécifier un ordinateur, aucun ordinateur (le système local) ou, si vous spécifiez l’ordinateur sous la forme \\*, l’utilitaire s’exécutera pour tous les ordinateurs du domaine. PsPasswd dispose d’un seul paramètre supplémentaire : @file exécute la commande pour tous les ordinateurs spécifiés dans le fichier texte. Ici encore, vous disposez d’un utilitaire très simple, qui offre d’énormes capacités multi-systèmes.

PsService

PsService vous permet d’afficher et de modifier les informations fournies par le Gestionnaire de contrôle des services (SCM) sur un ou plusieurs systèmes de votre réseau. Vous pouvez même rechercher un nom de service particulier sur les systèmes de votre réseau.

PsService \\computer -u username -p password command options

Lorsque vous exécutez PsService, command correspond à l’une des commandes répertoriées à la figure 7 et options correspond à un attribut à appliquer à la commande donnée. Si aucun commutateur supplémentaire de commande n’est fourni, PsService fournira une vidange complète des informations de SCM.

Figure 7 Commandes de PsService

Commande Description
query Interroge un service donné.
config Interroge les informations de configuration d’un service donné.
setconfig Définit les informations de configuration d’un service donné.
start Démarre un service.
stop Arrête un service.
restart Redémarre (arrêt et démarre) un service.
pause Interrompt un service.
cont Reprend un service suspendu.
depend Affiche les services dépendant d’un service donné.
find Recherche une instance donnée du service sur votre réseau.
security Fournit les informations de sécurité d’un service donné.

Vous pouvez donc considérer PsService comme une version puissante, en ligne de commande et pouvant être utilisée à distance de Services.msc, vous permettant toutefois d’examiner les services sur le réseau (comme par exemple ceux qui peuvent être dangereux) et de définir des informations de configuration.

PsShutdown

PsShutdown est aussi l’un de mes préférés. Même si certains diront que Microsoft fournit un outil effectuant cette tâche (shutdown.exe), ceux-ci ne sont vraiment pas identiques. La différence essentielle réside dans la puissance de PsShutdown : sa capacité de pouvoir arrêter et redémarrer un système distant. En outre, il a la possibilité de mettre un système en mode veille ou veille prolongée (et non uniquement de l’arrêter ou de le redémarrer), de verrouiller un système et de redémarrer un système après avoir affiché un message à l’utilisateur pendant une durée donnée.

PsShutdown \\computer -u username -p password

Des paramètres supplémentaires sont également disponibles pour l’utilisation de PsShutdown, comme indiqué à la figure 8.

Figure 8 Commutateurs de PsShutdown

Commutateur Description
-a Abandonne un arrêt en cours initié par PsShutdown.
-c Permet à un utilisateur interactif d’abandonner l’arrêt.
-d Interrompt l’ordinateur (mode veille).
-e Codes de raison de l’arrêt. Je vous recommande de consulter le site Web de Microsoft pour obtenir de l’aide sur ceux-ci, car ils peuvent s’avérer difficiles à utiliser avec PsShutdown comme avec l’outil intégré shutdown.exe. Voir msdn2.microsoft.com/en-us/library/aa376885.aspx pour plus d’informations.
-f Force toutes les applications en cours d’exécution à se terminer.
-h Place l’ordinateur en mode veille prolongée.
-k Éteint l’ordinateur (redémarre si la mise hors tension n’est pas prise en charge).
-l Verrouille l’ordinateur.
-m Spécifie le message à afficher aux utilisateurs interactifs.
-n Spécifie le délai d’attente avant l’échec de la connexion aux ordinateurs distants.
-o Ferme la session de l’utilisateur de la console.
-r Redémarre l’ordinateur.
-s Arrête, mais n’éteint pas.
-t Délai avant l’exécution de la commande d’arrêt ou de mise hors tension.
-v Affiche le message aux utilisateurs jusqu’ à l’arrêt.
@file Exécute la commande pour tous les ordinateurs spécifiés dans le fichier texte.

Vous pouvez constater que PsShutdown est un utilitaire puissant et extrêmement configurable de contrôle de l’alimentation d’un système, toujours relativement facile à utiliser.

PsSuspend

PsSuspend est un utilitaire pratique si vous voulez contrôler temporairement un processus rebelle ou simplement désactiver temporairement un processus utilisant intensivement le processeur sans perte de données ou de contexte d’application.

PsSuspend \\computer -u username -p password process ID

Vous pouvez obtenir l’identificateur du processus à l’aide de PsList. Une fois que vous avez interrompu un processus, vous pouvez utiliser le commutateur -r pour le reprendre. Notez que le concept d’interruption et de reprise d’un processus est également disponible avec Process Explorer, bien qu’il ne soit disponible que localement. PsSuspend peut évidemment interrompre et reprendre des processus à distance comme localement, ce qui lui confère un avantage par rapport à l’implémentation intégrée de Process Explorer.

Conclusion

Je trouve que la suite PsTools est un ensemble d’outils incontournable. Avec les autres utilitaires de Sysinternals (à savoir Regmon, Filemon, Process Explorer et maintenant Process Monitor), les PsTools sont les premiers programmes que je place sur mon disque après avoir réinstallé Windows sur mes systèmes. J’espère que cette rubrique vous a permis de vous familiariser avec les PsTools, si vous ne les connaissiez pas déjà et, si c’était le cas, j’espère que vous avez glané quelques connaissances supplémentaires sur ces outils. Un grand merci à Mark Russinovich, bien sûr, pour avoir fourni ces outils gratuitement pendant toutes ces années et pour m’avoir aidé à rédiger le contenu de cette rubrique.

Wes Miller est responsable du développement chez Pluck (www.pluck.com) à Austin, au Texas. Auparavant, Wes a travaillé chez Winternals Software à Austin et chez Microsoft en tant que responsable de programme et responsable de produit pour Windows. Vous pouvez contacter Wes à l’adresse suivante : technet@getwired.com.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.