Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

différence entre GetExpandedStringValue et expandenvironmentstrings

24 réponses
Avatar
Paskal
Bonjour


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:\Documents and Settings\[session]" (comme le fait
wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:\WINDOWS\system32\config\systemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?

merci,
@+
Paskal

10 réponses

1 2 3
Avatar
Jean
Quelle est la solution pour avoir un chemin "exploitable" ?


Comme ceci ... ? :

'---8<---
DEMO

Sub DEMO
regval=_
"HKEY_CURRENT_USER"&_
"Identities"&_
"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"&_
"Software"&_
"Microsoft"&_
"Outlook Express"&_
"5.0"&_
"Store Root"

WScript.Echo Valeur_REG_EXPAND_SZ(regval)
End Sub

Function Valeur_REG_EXPAND_SZ(valeur)
Valeur_REG_EXPAND_SZ=""
On Error Resume Next
With CreateObject("WScript.Shell")
Valeur_REG_EXPAND_SZ=_
.ExpandEnvironmentStrings(.RegRead(valeur))
End With
On Error GoTo 0
End Function
'---8<---

Amicalement,

--
Jean - JMST
Belgium

Avatar
scraper
Bonjour Jean, dans le message
news:
tu disais :


Quelle est la solution pour avoir un chemin "exploitable" ?


Comme ceci ... ? :


euh .... je crois que Paskal souhaite savoir pourquoi en utilisant la
fonction GetExpandedStringValue, il n'obtient pas le même résultat,
justement, qu'avec Expand.EnvironmentStrings ...

effectivement, j'ai essayé, et ça me retourne aussi ce fameux
C:WINDOWSsystem32configsystemprofile ... ??


bien entendu, l'exemple du msdn est pas directement exploitable, puisque
c'est une fausse REG_EXPAND_SZ :-(

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




--

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

scraper


Avatar
Paskal
Bonjour Jean

Heureux de te lire !

Merci de ta réponse, mais effectivement comme dit scraper, j'aurait voulu me
passer de l'objet WScript.Shell, (si toutefois cela était possible), car
j'utilise déjà l'objet
"winmgmts:{impersonationLevel=impersonate}!.rootdefault:StdRegProv" pour
accéder au registre.

@+
pascal






Quelle est la solution pour avoir un chemin "exploitable" ?


Comme ceci ... ? :

'---8<---
DEMO

Sub DEMO
regval=_
"HKEY_CURRENT_USER"&_
"Identities"&_
"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"&_
"Software"&_
"Microsoft"&_
"Outlook Express"&_
"5.0"&_
"Store Root"

WScript.Echo Valeur_REG_EXPAND_SZ(regval)
End Sub

Function Valeur_REG_EXPAND_SZ(valeur)
Valeur_REG_EXPAND_SZ=""
On Error Resume Next
With CreateObject("WScript.Shell")
Valeur_REG_EXPAND_SZ=_
.ExpandEnvironmentStrings(.RegRead(valeur))
End With
On Error GoTo 0
End Function
'---8<---

Amicalement,



Avatar
Fred
Dans son message %
Paskal nous dit :

Bonjour


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:Documents and Settings[session]" (comme
le fait wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:WINDOWSsystem32configsystemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?

merci,
@+
Paskal


Bonsoir,
En regardant vos posts, je ne vois rien qui me laisse penser que vous avez
vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.
Une piste de recherche peut-être ? Problème d'impersonation ?

--
Fred

Avatar
scraper
Bonjour Fred, dans le message
news:%
tu disais :


Bonsoir,
En regardant vos posts, je ne vois rien qui me laisse penser que vous
avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.


à vrai dire, je ne me suis pas posé la question ?

j'ai juste repris l'exemple du msdn, et dans la même clé, j'ai créé une
entrée REG_EXPAND_SZ que j'ai essayé de lire
ce n'est pas correct ?
(je ne sais pas trop, je n'ai pas l'habitude d'accéder au Registre par WMI
...




--

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

scraper

Avatar
Paskal
Bonjour Fred


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:Documents and Settings[session]" (comme
le fait wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:WINDOWSsystem32configsystemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?




En regardant vos posts, je ne vois rien qui me laisse penser que vous
avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.
Une piste de recherche peut-être ? Problème d'impersonation ?


Bien vu !

La question deviendrait donc : pourquoi wmi me sort la variable
d'environnement profil du système ?
Je cherche...

merci,
@+
pascal


Avatar
Fred
Dans son message
Paskal nous dit :

Bonjour Fred


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:Documents and Settings[session]" (comme
le fait wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:WINDOWSsystem32configsystemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?




En regardant vos posts, je ne vois rien qui me laisse penser que vous
avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.
Une piste de recherche peut-être ? Problème d'impersonation ?


Bien vu !

La question deviendrait donc : pourquoi wmi me sort la variable
d'environnement profil du système ?
Je cherche...

merci,
@+
pascal


Peut être une réponse précise ici :
http://minilien.fr/a0jzl2

Excuse-moi de ne pas l'avoir encore entièrement lu ! Je le fais de suite.

--
Fred



Avatar
Fred
Dans son message
Paskal nous dit :

Bonjour Fred


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:Documents and Settings[session]" (comme
le fait wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:WINDOWSsystem32configsystemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?




En regardant vos posts, je ne vois rien qui me laisse penser que vous
avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.
Une piste de recherche peut-être ? Problème d'impersonation ?


Bien vu !

La question deviendrait donc : pourquoi wmi me sort la variable
d'environnement profil du système ?
Je cherche...

merci,
@+
pascal


Je viens de tourner le problème dans tous les sens.
Il semble que l'on n'ait pas le choix.
Les appels avec le moniker winmgmts se font par délégation au système.
Donc il vaut mieux passer par le Shell pour ce cas précis.


--
Fred



Avatar
Fred
Dans son message
scraper nous dit :

Bonjour Fred, dans le message
news:%
tu disais :


Bonsoir,
En regardant vos posts, je ne vois rien qui me laisse penser que vous
avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.


à vrai dire, je ne me suis pas posé la question ?

j'ai juste repris l'exemple du msdn, et dans la même clé, j'ai créé
une entrée REG_EXPAND_SZ que j'ai essayé de lire
ce n'est pas correct ?
(je ne sais pas trop, je n'ai pas l'habitude d'accéder au Registre
par WMI ...


Bonsoir,
Moi non plus, je ne scripte pas du WMI à longueur de journée !
Je n'avais jamais rencontré le problème de Paskal, par chance en fait.
Donc, il semblerait, que lorsque l'on fait appel à WMI (avec winmgmts), on
fait travailler le compte system par délégation. J'ai lu la MSDN en anglais
et je trouve tout cela assez sybillin.
Si quelqu'un a un document qui pose bien les choses je suis preneur.
Je crois que WMI est assez simple ... à condition de le prendre par le bon
bout !


--
Fred


Avatar
Paskal
Bonjour Fred


Lorsque j'interroge dans bdr une variable d'environnement avec
GetExpandedStringValue, j'ai en retour une valeur inattendue :

Par exemple, j'interroge une valeur qui contient %UserProfile%

Au lieu de me renvoyer "C:Documents and Settings[session]" (comme
le fait wshshell.expandenvironmentstrings("%userprofile%"))

Il me renvoie "C:WINDOWSsystem32configsystemprofile"

Qu'est-ce que ça signifie ?
Quelle est la solution pour avoir un chemin "exploitable" ?




En regardant vos posts, je ne vois rien qui me laisse penser que
vous avez vu que c'est le chemin de l'utilisateur SYSTEM.
Excusez-moi si je me trompe.
Une piste de recherche peut-être ? Problème d'impersonation ?


Bien vu !

La question deviendrait donc : pourquoi wmi me sort la variable
d'environnement profil du système ?
Je cherche...


Je viens de tourner le problème dans tous les sens.
Il semble que l'on n'ait pas le choix.
Les appels avec le moniker winmgmts se font par délégation au système.
Donc il vaut mieux passer par le Shell pour ce cas précis.


Merci.
J'ai retourné un peu dans tous les sens les infos du msdn dans le post
précédent, et je n'ai pas trouvé non plus.

Dommage.

Merci de ton aide,


--
@+
Paskal [MVP]
http://www.faqOE.com




1 2 3