OVH Cloud OVH Cloud

Intitulés des icônes du poste de travail

17 réponses
Avatar
Fred
Bonjour,
Je souhaite modifier les intitulés des lecteurs réseaux dans le poste de
travail (windows 2000 pour l'instant)
Je ne trouve pas de solution en batch. ni en script avec les objets de base
(FileSystemObject ou Shell)
Voyez-vous une solution ?

PS : j'ai déjà posté sur windows2000 à ce sujet il y a quelques jours.

7 réponses

1 2
Avatar
scraper
Bonjour Fred, dans le message
news://uE%23$
tu disais :


Bonsoir,
Je vais me mettre au script WMI avec le scriptomatic pour commencer.
J'ai vu également un utilitaire regini.exe qui peut faire cela.
Mais l'ensemble de mon problème ne peut être résolu en batch donc je
vais utiliser ta méthode.


le problème du WMI sur des vieux postes (win98, etc ...) où il est pas
installé d'office ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

Avatar
Fred
Bonsoir,
Merci pour le renseignement :)
Je suis en Windows 2000 partout.
J'étudie en ce moment le passage en XP car je vais bientôt avoir assez de
licences.
Jusqu'à maintenant, je "retrogradais" en 2000 pas souci d'homogénéité. Non
tant pour l'administration que pour les utilisateurs et leur formation.

"scraper" a écrit dans le message de news:

Bonjour Fred, dans le message
news://uE%23$
tu disais :


Bonsoir,
Je vais me mettre au script WMI avec le scriptomatic pour commencer.
J'ai vu également un utilitaire regini.exe qui peut faire cela.
Mais l'ensemble de mon problème ne peut être résolu en batch donc je
vais utiliser ta méthode.


le problème du WMI sur des vieux postes (win98, etc ...) où il est pas
installé d'office ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper





Avatar
sympatix
Salut Scrap et aux autres !

Alors, tu fais aussi partie comme moi du club de:
C.C.Q.A.A.P.N.V.G.P.N.P.T.P.C.V.M

Ceux Qui Après Avoir Passé des Nuits entières à apprendre le Vbscript de
Grand Père, Ne sont Pas encore Tout à fait Prêts à Changer trop Vite de
Méthode ?

;-)

PS: Pardon d'avance à tout ceux qui n'aiment pas mon humour :-)

Cordialement
Sympatix

"scraper" a écrit dans le message de
news:
Bonjour Fred, dans le message
news://uE%23$
tu disais :


Bonsoir,
Je vais me mettre au script WMI avec le scriptomatic pour commencer.
J'ai vu également un utilitaire regini.exe qui peut faire cela.
Mais l'ensemble de mon problème ne peut être résolu en batch donc je
vais utiliser ta méthode.


le problème du WMI sur des vieux postes (win98, etc ...) où il est pas
installé d'office ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper





Avatar
Jean
Bonjour,

absolument !
Si vous voulez cibler un large éventail d'OS Windows ... si il y a moyen ... oubliez WMI :-)

Amicalement,

Jean - JMST
Belgium

P.S. : ... ce n'est pas de l'humour ... c'est du réalisme :-) (désolé pour ceux qui n'aime pas mon humour :O) )


"sympatix" a écrit dans le message de news:
Salut Scrap et aux autres !

Alors, tu fais aussi partie comme moi du club de:
C.C.Q.A.A.P.N.V.G.P.N.P.T.P.C.V.M

Ceux Qui Après Avoir Passé des Nuits entières à apprendre le Vbscript de
Grand Père, Ne sont Pas encore Tout à fait Prêts à Changer trop Vite de
Méthode ?

;-)

PS: Pardon d'avance à tout ceux qui n'aiment pas mon humour :-)

Cordialement
Sympatix

"scraper" a écrit dans le message de
news:
Bonjour Fred, dans le message
news://uE%23$
tu disais :


Bonsoir,
Je vais me mettre au script WMI avec le scriptomatic pour commencer.
J'ai vu également un utilitaire regini.exe qui peut faire cela.
Mais l'ensemble de mon problème ne peut être résolu en batch donc je
vais utiliser ta méthode.


le problème du WMI sur des vieux postes (win98, etc ...) où il est pas
installé d'office ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper









Avatar
Fred
"Jean-Claude BELLAMY" a écrit dans le
message de news:%
Dans le message news:uz0$ ,
Fred s'est ainsi exprimé:

Voilà un bout de script qui fonctionne mais qui ne me paraît pas très
propre.
Si quelqu'un à des idées pour améliorer les points suivants :
- la méthode RegWrite ne permet pas d'écrire des données REG_BINARY
de plus d'une valeur.


Il faut laisser tomber ces méthodes de la classe Shell de WSH!
Elle est beaucoup trop limitée.

Il faut faire appel au contraire à StdRegProv (de WMI), qui autorise
absolument tout au niveau BDR (lecture/écriture totu type, énumération de
clef et de valeurs, test de permissions, ...).

En particulier la méthode "SetBinaryValue", qui permet, comme son nom
l'indique, de définir n'importe quelle valeur binaire, de n'importe quelle
longueur.


Exemple :
---------

const HKLM = &H80000002
Const REG_BINARY = 3
Tab= array( _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H03, &H00, &H00, &H00, &H38, &H00, &H1d, &H00, _
&H38, &H00, &H1d, &He0, &H00, &H00, &H00, &H00)

strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!" & _
strComputer & "rootdefault:StdRegProv")

KeyName="SYSTEMCurrentControlSetControlKeyboard Layout"
ValueName="Scancode Map"
oReg.SetBinaryValue HKLM, KeyName,ValueName,Tab


Pour tout savoir sur "StdRegProv" :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/stdregprov.asp

En particulier sur "SetBinaryValue" :

http://msdn.microsoft.com/library/en-us/wmisdk/wmi/setbinaryvalue_method_in_class_stdregprov.asp



J'ai donc laissé une chaîne de caractères et
cela marche comme cela.

- je ne sais pas tester l'existence d'une clé ou d'une valeur.


Il suffit de
1) intercepter les erreurs par un "On error resume next" (comme tu l'as
fait)
2) tester la variable "err.number" (ou "err" tout court, vu que "number"
est

la propriété par défaut de err)!

Exemple :

Function ReadKey(key)
On Error Resume Next
ReadKey=shell.RegRead(key)
If Err.Number<>0 Then
If right(key,1)<>"" Then key=key & ""
Err.Clear
ReadKey=shell.RegRead(key)
If Err.Number<>0 Then Wscript.Echo "Erreur dans la lecture de la clef"
&

vbcrlf & key
End If
end function


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *



Bonjour Jean-Claude,

Suite à tes conseils j'ai fait ce petit script (très perfectible, c'est une
ébauche) qui fonctionne sous 2000 et XP
Il y a quelques interrogations en commentaire.

--------Début du script------------
Const HKEY_CURRENT_USER = &H80000001
Set oArgs = WScript.Arguments
if oArgs.Count < 2 Then WScript.Quit(1)
sLecteur = oArgs(0) 'La lettre du lecteur sans ":"
sCheminReseau = oArgs(1)
If oArgs.Count = 3 Then sLabel = oArgs(2)

'XP ou 2000 ? Cela fonctionne dans mon cas car je n'ai qu'un système,
'mais s'il y a un multi boot, comment déterminer celui qui est actif ?
For Each oOS in GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
sSysteme = oOS.Properties_("Caption").Value
Next

Set oReseau = WScript.CreateObject("WScript.Network")
oReseau.MapNetworkDrive sLecteur & ":", sCheminReseau
Set oRegistre = GetObject("winmgmts:{impersonationLevel impersonate}!.rootdefault:StdRegProv")
If sLabel = "" Then WScript.Quit(0)
Select Case sSysteme
Case "Microsoft Windows XP Professionnel"
'Utilisation d'une expression régulière pour m'amuser un peu
Set oRegExp = New RegExp
oRegExp.Global = True
oRegExp.Pattern = ""
sCle = "SoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2"
& _
oRegExp.Replace(sCheminReseau, "#")
iResultat = oRegistre.SetStringValue(HKEY_CURRENT_USER, sCle,
"_LabelFromReg", sLabel)

Case "Microsoft Windows 2000 Professionnel"
sCle = "SoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints" &
sLecteur & "_LabelFromReg"
'Le SetBinaryValue ne fonctionne qu'avec un tableau retourné par array
(Variant), j'ai essayé en vain avec un Dim.
'N'y a-t-il pas un autre moyen de le créer ? C'est un peu lourd.
uValeur=array( _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00, &H00, &H00, &H00, &H00, &H00, &H00, _
&H00, &H00)
'Les 4 lignes qui suivent restent à tester avec des labels de lecteur qui
ont des
'caractères Unicode supérieurs à &HFF.
For Index = 1 To Len(sLabel)
uValeur(2*Index-2) = AscW(Mid(sLabel, Index, 1)) And &H00FF
uValeur(2*Index-1) = AscW(Mid(sLabel, Index, 1)) And &HFF00
Next
'Le moyen le plus simple d'être sûr que les clés sont créées par le
MapNetworkDrive c'est d'attendre.
'Je me suis posé la question d'utiliser un "SINK" mais cela me paraît
donner une usine à gaz. Les événements
'se déclenchent à la moindre modif et le MapNetworkDrive crée un certain
nombre de clés et valeurs.
'Quel est ton avis là dessus ?
WScript.Sleep 4000
iResultat = oRegistre.SetBinaryValue(HKEY_CURRENT_USER, sCle, "Cache",
uValeur)
iResultat = oRegistre.GetDWORDValue(HKEY_CURRENT_USER, sCle, "Version",
lVersion)
lVersion = lVersion + 1
iResultat = oRegistre.SetDWORDValue(HKEY_CURRENT_USER, sCle, "Version",
lVersion)
End Select
------Fin du script-----

Voilà, il me faut approfondir l'utilisation du WMI. Pour l'instant je n'ai
pas encore une vision très clair de l'architecture globale.
Il y a souvent plusieurs moyens de faire la même chose et je m'y perd un peu
entre les Win32, CIM, SWbem etc ...


Avatar
sympatix
Bonjour !

P.S. : ... ce n'est pas de l'humour ...
Désolé... (Michel Denizot, les Guignols de l'Info, Canal+)

;-)

Sympathiquement
Sympatix


"Jean" <http:// a écrit dans le message de
news:ONJ$
Bonjour,

absolument !
Si vous voulez cibler un large éventail d'OS Windows ... si il y a moyen
... oubliez WMI :-)


Amicalement,

Jean - JMST
Belgium

P.S. : ... ce n'est pas de l'humour ... c'est du réalisme :-) (désolé pour
ceux qui n'aime pas mon humour :O) )



"sympatix" a écrit dans le message de news:


Salut Scrap et aux autres !

Alors, tu fais aussi partie comme moi du club de:
C.C.Q.A.A.P.N.V.G.P.N.P.T.P.C.V.M

Ceux Qui Après Avoir Passé des Nuits entières à apprendre le Vbscript de
Grand Père, Ne sont Pas encore Tout à fait Prêts à Changer trop Vite de
Méthode ?

;-)

PS: Pardon d'avance à tout ceux qui n'aiment pas mon humour :-)

Cordialement
Sympatix

"scraper" a écrit dans le message de
news:
Bonjour Fred, dans le message
news://uE%23$
tu disais :


Bonsoir,
Je vais me mettre au script WMI avec le scriptomatic pour commencer.
J'ai vu également un utilitaire regini.exe qui peut faire cela.
Mais l'ensemble de mon problème ne peut être résolu en batch donc je
vais utiliser ta méthode.


le problème du WMI sur des vieux postes (win98, etc ...) où il est pas
installé d'office ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

















Avatar
Fred
Bonjour,
Pour tous ceux qui ont été intéressés par ce problème, "Magic" m'a répondu
ceci sur microsoft.public.fr.windows2000 :

Pour renommer le nom d'un lecteur réseau sous Windows 2000, créez un fichier
'desktop.ini' à la racine du dossier partagé, son contenu doit être
similaire
aux éléments suivants :
[.ShellClassInfo]
NetShareDisplayName=Nom que l'on veut donner au lecteur
InfoTip=Commentaire

La ligne InfoTip désigne un commentaire qui sera visible au niveau de
l'explorateur



"Fred" a écrit dans le message de
news:%
Bonjour,
Je souhaite modifier les intitulés des lecteurs réseaux dans le poste de
travail (windows 2000 pour l'instant)
Je ne trouve pas de solution en batch. ni en script avec les objets de
base

(FileSystemObject ou Shell)
Voyez-vous une solution ?

PS : j'ai déjà posté sur windows2000 à ce sujet il y a quelques jours.




1 2