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:
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