IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Win32_ShortcutFile pas à jour


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut Win32_ShortcutFile pas à jour
    Bonjour j'ai fais le script ci-dessous qui recherche si il existe un raccourci sur le bureau d'un utilisateur en fonction du Path et du target de ce raccourci.
    Par exemple ici je cherche le raccourci vers l'executable cmd.exe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    '-- Test de la présence du fichier executable, s'il n'existe pas, pas besoin de lancer la copie du raccourci
    set filesys = CreateObject("Scripting.FileSystemObject")
    le_chemin_du_fichier = "C:\WINDOWS\system32\cmd.exe"
    if filesys.FileExists (le_chemin_du_fichier) then
    	Wscript.Echo("le fichier existe, au boulot...")
    	'-- Initialisation des variables --'
    	Set WshShellObj = WScript.CreateObject("WScript.Shell")
    	Set WshProcessEnv = WshShellObj.Environment("Process") 
     
    	'-- WshProcessEnv("USERNAME") donne le nom d'utilisateur
    	'-- Remplacer les chemins par les chemins qui t'interesse Target = cible du raccourci et Path = le lieu ou est contenu ton raccourci (Exemple : c:\documents and settings\opsi\bureau\)
    	'-- Attention de doubler les '\' !!
    	User = WshProcessEnv("USERNAME")
    	Target = "C:\WINDOWS\system32\cmd.exe"
    	Path = "\Documents and Settings\" & User&"\Bureau\"
     
    	'-- Lancement de la recherche
    	strComputer = "."
    	Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    	Set colItems = objWMIService.ExecQuery("Select * from Win32_ShortcutFile") 
     
    	'--initialisation du compteur
    	i = 0
    	For Each objItem in colItems
    		Wscript.Echo "Name: " & objItem.Name
    		Wscript.Echo "Extension: " & objItem.Extension
    		Wscript.Echo "Path: " & objItem.Path
    		Wscript.Echo "Target: " & objItem.Target
    		if objItem.Target = Target and objItem.Path =Path then i = i +1
    		'WScript.Sleep 500
    	Next
     
    	'-- Dans le cas ou i = 0 alors le raccourci n'existe pas et donc on doit copier le raccourci sur le bureau
    	if i = 0 then 
    		Wscript.Echo "le raccourci n'est pas présent"
    		Const OverwriteExisting = True
    		Set objFSO = CreateObject("Scripting.FileSystemObject")
    		'--source = source du fichier à copier
    		source = "c:\cmd.lnk"
    		'-- destination de la copie
    		destination = "c:\Documents and Settings\" & User & "\Bureau\cmd.lnk"
    		objFSO.CopyFile source, destination
    		Set objFSO = Nothing
    	end if
    	else Wscript.Echo "Raccourci déjà présent"
    end if
    '-- Fin du script
    Le problème est que j'ai l'impression que ce fameux Win32_ShortcutFile qui, si j'ai bien compris, est sensé contenir tout les raccourcis du pc. Or il ne trouve pas ceux de mon bureau et donc ici pas celui qui pointe vers cmd.exe.
    Est il possible que l'on soit obligé de mettre à jour cette table ??
    J'espère avoir été clair.
    Merci à tous

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Le code semble bon.
    As tu vérifié la valeur de path ?
    Affiche sa valeur dans la boucle et compare manuellement.

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_ShortcutFile",,48) 
    For Each objItem in colItems 
        Wscript.Echo "-----------------------------------" & vbcrlf & "Win32_ShortcutFile instance" & vbcrlf & "-----------------------------------" & vbcrlf & "Name: " & objItem.Name  & vbcrlf & "Extension: " & objItem.Extension & vbcrlf & "Path: " & objItem.Path & vbcrlf & "Target: " & objItem.Target
    Next
    Si cela ne t'affiche pas les shorcuts, il y a un problème.

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    Merci pour ce code,
    après vérification, le script fonctionne correctement sur ma machine du boulot.
    Est-ce que cette table (je ne sais pas si on peut appeller cela table) nécessite un redémarrage pour ce mettre à jour ?

  4. #4
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    Après test, la mise à jour semble dynamique. Reste à trouve pourquoi il ne voit pas les raccourci sur mon bureau ...

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tu as regardé .. s'il ne s'agissait pas d'un problème entre les raccourcis présent sur "ton bureau" et ceux présent sur le bureau de tous les utilisateurs .. (répertoire all users..) ?

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    Non, non, j'ai bien fais attention à cela.... C'est étrange, si je place les raccourcis à la racine de mon disque, cela fonctionne, mais sur le bureau, il ne m'en voit aucun.... mise à part ceux dans le répertoire raccourcis "bureau non utilisés". Un comble non ?
    Je vais faire les même test sur ma machine au boulot, mais c'est très étrange tout ça...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Liaisons qui ne se mettent pas à jour (macro trop rapide?)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/11/2005, 09h36
  2. Update Récalcitrante !! Ne met pas à jour !
    Par samlepiratepaddy dans le forum Access
    Réponses: 14
    Dernier message: 28/10/2005, 09h31
  3. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31
  4. [CR 8.5] Objet ole lié (BMP) ne se remet pas à jour .
    Par rodrigue50 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/02/2004, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo