2013-08-16 3 views
0

Je dois exécuter un script sur les comptes d'utilisateurs avec des privilèges limités. Dans le script, il y a une ligne qui trouve le chemin complet d'un fichier spécifié et il doit fonctionner avec des variables d'environnement, par exemple% HOMEDRIVE%.WSHShell.ExpandEnvironmentStrings avec des privilèges limités

Cependant, la ligne de commande

objShell.ExpandEnvironmentStrings("%HOMEDRIVE%") 

lance une exception acess refusée si l'utilisateur n'est pas un administrateur. Comment puis-je lire cette variable d'environnement à partir d'un compte avec des privilèges restreints?

Merci!

+0

Veuillez fournir plus de contexte et les détails d'erreur exacts (numéro d'erreur, message, numéro de ligne). Cette ligne que vous avez publiée ne doit pas déclencher d'erreurs "accès refusé". –

Répondre

0

Essayez de mettre les éléments suivants au début de votre script:

Set oShell = CreateObject("WScript.Shell") 
strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
Const ssfPROFILE = &H28 
Set oShell = CreateObject("Shell.Application") 
strHomeFolder = oShell.NameSpace(ssfPROFILE).Self.Path 

Ensuite, lorsque vous devez référencer le nom d'utilisateur, vous pouvez utiliser les éléments suivants au lieu de « C: \ Users ... \ » vient de mettre dans:

= strHomeFolder & "\...\The Rest Of The Filepath eg.appdata\...\" 

Cela devrait vous permettre d'accéder au chemin spécifique de l'utilisateur, puis continuer pour trouver un fichier spécifique. Il accède à n'importe quel utilisateur qui est connecté dans le dossier de départ. Si un autre utilisateur l'ouvre, il accèdera à son homefolder à la place.

J'espère que cela aide!

+0

Ce code rompt également sur .ExpandEnvironmentStrings avec l'erreur «accès refusé» sur les comptes non-administrateur. Il semble qu'un utilisateur standard ne puisse pas accéder aux variables d'environnement. – Machinegon

Questions connexes