Suppression du fichier desktop.htt par VBS

Suppression du fichier desktop.htt par VBS - VB/VBA/VBS - Programmation

Marsh Posté le 28-06-2010 à 14:57:55    

Bonjour tout le monde,  
 
Je suis completement nouveau sur ce forum mais je le connais de réputation, je vais donc essayer d'expliquer au mieux mon problème.
 
Je vous expose mon problème :  
 
j'ai en charge des postes dans un domaine dans lequel des GPO s'appliquent sur les postes des utilisateurs les empechant de faire certaines opérations de modif du systeme.
Exemple : changer le fond d'ecran.
(Notre département ne dispose des autorisations pour modifier les GPO)
 
Il arrive que l'active desktop plante et pour le reinitialiser je peux entre autre supprimer/renommer le fichier desktop.htt qui se trouve dans %USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt
 
Je cherche au travers de VBS(dont je ne connaissais rien il y a deux semaines..) à lui retirer ses attributs cachés et systeme pour ensuite le supprimer.
Voici le code que j'ai constitué à partir de "sesame script" du site de Microsoft :  
 
 
Set WSHShell = WScript.CreateObject("WScript.Shell" )
set objFSO = createobject("scripting.filesystemobject" )
set objfile = objfso.getfile("%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt" )
 
if objfso.fileexists("%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt" ) Then
 
 objFSO.DeleteFile("%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt" )
        wscript.echo "Le fichier existe et a été supprimé"
 
else  
        wscript.echo " le fichier n'existe pas"
 WSHShell.Run "attrib.exe -s -h %USERPROFILE%\Application Data\Microsoft\Internet Explorer\Destkop.htt"
 objFSO.DeleteFile("%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt" )
 
 
end if
 
 
Mes problèmes sont les suivants :  
dans un terminal, attrib.exe -s -h %USERPROFILE%\Application Data\Microsoft\Internet Explorer\Destkop.htt me rend bien le fichier détectable et donc supprimable.
Mais au travers du script cela ne fonctionne pas.
 
Ne sachant pas si mon script est correct ou non, ais-je fait une erreur ?
 
je precise que ce script doit pouvoir s'adapter à n'importe quelle machine du parc d'ou l'utilisation (peut etre a tord) de %USERPROFILE% pour cibler le répertoire personnel de chaque utilisateur.
 
Merci d'avance pour vos réponses/conseils éventuels. :)
 

Reply

Marsh Posté le 28-06-2010 à 14:57:55   

Reply

Marsh Posté le 30-06-2010 à 09:00:00    

petit up :)  
personne n'a une idée sous le coude ?

Reply

Marsh Posté le 30-06-2010 à 09:45:24    

Hello
 
Sous le coude, non rien :D
 
 
Il te faut definir le %USERPROFILE%
Si tu mets ca dans une chaine, bah... ca renvoit %USERPROFILE%
Toto="12+3" bah ca renvoit 12+3
Toto = 12+3 ca renvoit 15
 
Ensuite le code... Repeter 15 fois le chemin a ton fichier... C'est pas fait pour les chats les variables hein [:le colonel moutarde:5]  
Pis euh attrib juste pour tester si un fichier existe, c'est un peu comme se raser les poils pubiens a la tronçonneuse [:transparency]  
 
Aller, un petit coup de main, meme si en googlant ca se trouve en 2sc1/2 ;)

Code :
  1. Dim WshShell, sUserProfile,CheminFichier
  2. Set WshShell=CreateObject("WScript.Shell" )
  3. set objFSO = createobject("scripting.filesystemobject" )
  4. sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%" )
  5. CheminFichier = sUserProfile  & "\Application Data\Microsoft\Internet Explorer\Desktop.htt"
  6. if objFSO.fileexists(CheminFichier) Then
  7.         objFSO.DeleteFile(CheminFichier)
  8.         wscript.echo "Le fichier existe et a été supprimé"
  9. else 
  10.         Set ObjFile = objFSO.createtextFile(CheminFichier) 
  11.         objFSO.DeleteFile(CheminFichier)
  12.         wscript.echo " le fichier n'existe pas"
  13.  
  14. end if
  15. Set WshShell=Nothing
  16. Set objFSO = Nothing
  17. Set objfile = Nothing


Message édité par SuppotDeSaTante le 30-06-2010 à 09:54:37

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 30-06-2010 à 11:03:46    


Super merci beaucoup!  
 
Pour les variables mon collègue m'a dit que je devais passer par la mais ne connaissant rien à la prog ca ne me disait rien du tout.
La je comprend mieux.
Dim les enonce et on les qualifie après si j'ai bien suivi.
 
ExpandEnvironmentStrings je ne connaissais pas mais c'est chose faite merci :)
 
Pour attrib ce n'etait pas pour vérifier que le fichier existe mais plus pour lui retirer ses attributs (h et s) qui je pensais empechaient la suppression du fichier.
 
Mais finalement c'est le %userprofile% non définit qui posait problème.
 
En revanche la partie en dessous de Else, je ne saisis pas tout.  
Pourquoi créer un fichier text et ensuite le supprimer (si c'est bien ce que fait le script) ?
Simplement faire la ligne 18 ne suffit-il pas?
 
enfin les lignes 24 25 et 26 me laisse perplexe. Est ce pour libérer la mémoire utiliser par les routines ou est ce pour autre chose?
 
En tout ca merci pour ce coup de main ;)
 
j'ai encore à bucher le vbs je suis loin de pouvoir faire ce que je veux avec..

Reply

Marsh Posté le 30-06-2010 à 11:43:19    

Ethor a écrit :


Super merci beaucoup!  
 
Pour les variables mon collègue m'a dit que je devais passer par la mais ne connaissant rien à la prog ca ne me disait rien du tout.
La je comprend mieux.
Dim les enonce et on les qualifie après si j'ai bien suivi.
Oui
 
ExpandEnvironmentStrings je ne connaissais pas mais c'est chose faite merci :)
De rien, bien pratique et indispensable pour recuperer les variables d'environnement
 
Pour attrib ce n'etait pas pour vérifier que le fichier existe mais plus pour lui retirer ses attributs (h et s) qui je pensais empechaient la suppression du fichier.
 
Mais finalement c'est le %userprofile% non définit qui posait problème.
Bah euh non, ton
set objfile = objfso.getfile("%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Desktop.htt" )
Ne peut que merder si le fichier n'existe pas, donc ton attrib n'aurait jamais fonctionner. Tu peux pas definir objfile si ton fichier n'existe pas. Dans le cas où le fichier n'existait pas, ton prog aurait planté, donc ne serait jamais passé dans le attrib. D'où ma reflexion.
 
 
En revanche la partie en dessous de Else, je ne saisis pas tout.  
Pourquoi créer un fichier text et ensuite le supprimer (si c'est bien ce que fait le script) ?
Simplement faire la ligne 18 ne suffit-il pas?
Si si. Car au debut on teste si le fichier existe, c'est donc qu'il n'existe pas.
Mais toi tu utilisais attrib pour jouer sur les propriétés du fichier, mais dans la condition ou il n'existe pas... :pt1cable:  
Je me suis dit que tu avais du code dans cette condition que tu n'avais pas mis ici, je t'ai juste donc mis un exemple de comment creer un fichier et de le supprimer.
Tu peux juste mettre en effet le message wscript.echo " le fichier n'existe pas"

 
enfin les lignes 24 25 et 26 me laisse perplexe. Est ce pour libérer la mémoire utiliser par les routines ou est ce pour autre chose?
Oui, pis c'est aussi une habitude que de liberer mes variables objets
En tout ca merci pour ce coup de main ;)
De rien :jap:
 
j'ai encore à bucher le vbs je suis loin de pouvoir faire ce que je veux avec..


Message édité par SuppotDeSaTante le 30-06-2010 à 11:53:01

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed