> 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

Le Guide d’Orchestration du Parcours client

Le Guide d’Orchestration du Parcours client

Au-delà de la clarification des nouveaux concepts de gestion du parcours client, ce guide vous permettra de définir, créer et mettre œuvre une orchestration complète articulée autour des trois volets essentiels au succès de l’expérience client et de l’entreprise.

Tech - Par iTPro - Publié le 24 juin 2010