> Tech > Le cas des boîtes de dialogue File Open de Windows Vista retardées

Le cas des boîtes de dialogue File Open de Windows Vista retardées

Tech - Par iTPro - Publié le 24 juin 2010
email

Ceci est un résumé du posting bien connu du blog technique de Mark Russinovich (https://blogs.technet.com/markrussinovich/ about.aspx ) qui couvre des sujets tels que le dépannage, les technologies et la sécurité de Windows.

L’automne dernier, j’ai pris la parole lors de la conférence Microsoft Tech Ed : IT Forum

Le cas des boîtes de dialogue File Open de Windows Vista retardées

qui se tenait à Barcelone. La conférence a remporté un grand succès et Windows Vista, que j’avais apporté pour la première fois, a fait merveille. Cependant, pendant certaines démos, j’ai constaté que la boîte de dialogue File Open, commune à toutes les applications Windows, mettait parfois jusqu’à 15 secondes pour apparaître. Ce comportement paraissait semblable à celui sur lequel j’avais écrit dans « The Case of the Process Startup Delays ». Dans ce cas, les communications RPC (remote procedure call) de Windows Defender essayaient de contacter un DC (domain controller), ce qui conduisait à des impasses quand le système était déconnecté de son domaine.

Pour analyser le problème, j’ai lancé Notepad à partir de Windbg (qui fait partie du Debugging Tools for Windows gratuit disponible à http://www.microsoft.com/whdc/devtools/ debugging/ default.mspx). J’ai tapé Ctrl+O pour ouvrir la boîte de dialogue File Open puis, quand je me suis retrouvé dans l’impasse, j’ai fait irruption et regardé la pile du thread principal de Notepad.

Un coup d’oeil aux noms de fonctions de la pile m’a éclairé immédiatement : quand vous accédez à la boîte de dialogue File Open pour la première fois dans une application, vous naviguez jusqu’à votre dossier Documents. Sur Vista, mon dossier est C:\Users\Markruss\Documents, mais le shell veut rendre agréable le chemin dans la nouvelle barre bread crumb de la boîte de dialogue (qui montre la trace des dossiers accédés – c’est-à-dire breadcrumbs), en l’affichant sous la forme « Mark Russinovich\ Documents ». Et donc il appelle GetUserNameEx pour examiner le nom d’affichage de mes comptes tel qu’il est stocké dans mon objet User dans l’AD (Active Directory).

J’ai défini un point de rupture sur le renvoi de l’appel et je l’ai atteint une fois le délai écoulé. GetUserNameEx a renvoyé le code d’erreur ERROR_NO_SUCH_DOMAIN et une exploration dans SHGetUserDisplayName m’a révélé qu’il se résout à appeler GetUserName. Au lieu de verrouiller le nom d’affichage de l’utilisateur, cette fonction obtient simplement le SID (Security Identifier) de l’utilisateur à partir du jeton du processus (la structure des données kernel qui définit le détenteur d’un processus) et appelle LookupAccountName pour traduire le SID en son nom de compte, qui dans mon cas est simplement « markruss ». Par conséquent, la barre breadcrumb de la boîte de dialogue Open File a référencé « markruss ». Cependant, quand je me suis reconnecté au réseau d’entreprise, la barre breadcrum référençait « Mark Russinovich ».

J’ai découvert que la boîte de dialogue File Open de Vista essaie d’examiner le nom d’affichage d’un utilisateur pour la barre breadcrumb quand elle montre le dossier Documents, et dans le processus, essaie de trouver un DC en envoyant un datagramme LAN Manager via le driver de périphérique Browser.sys. Il n’y a pas de contournement et quiconque a un système joint au domaine qui n’est pas connecté au domaine pendant plus de 30 minutes, subira le même retard – au moins jusqu’à l’arrivée de Vista Service Pack 1 (SP1).

Par Mark Russinovich

Téléchargez gratuitement cette ressource

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

Téléchargez cette étude Forrester et découvrez comment booster la collaboration tout en dégageant un excellent R.O.I grâce au système de vidéoconférence HP Elite Slice G2 avec Microsoft Teams !

Tech - Par iTPro - Publié le 24 juin 2010