2013-08-16 2 views
0

Я должен запустить сценарий для учетных записей пользователей с ограниченными правами. В скрипте есть строка, которая находит полный путь указанного файла и должна работать с переменными среды, например% HOMEDRIVE%.WSHShell.ExpandEnvironmentStrings с ограниченными привилегиями

Однако командная строка

objShell.ExpandEnvironmentStrings("%HOMEDRIVE%") 

бросает Асесс Отказано исключение, если пользователь не является администратором.

Как я могу прочитать эту переменную среды из учетной записи с ограниченными правами?

Спасибо!

+0

Просьба предоставить больше контекста и точные сведения об ошибке (номер ошибки, сообщение, номер строки). Эта строка, которую вы опубликовали, не должна приводить к ошибкам, связанным с доступом. –

ответ

0

Попробуйте положить следующую строку в начале вашего скрипта:

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

Затем, когда вам нужно ссылаться на имя пользователя, вы можете использовать следующие вместо «C: \ Users ... \» просто положить in:

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

Это должно позволить вам получить доступ к пути, специфичному для пользователя, а затем продолжить поиск определенного файла. Он обращается к тому, кто когда-либо был пользователем, который зарегистрирован в домашней папке. Если другой пользователь откроет его, он получит доступ к своей домашней папке.

Надеюсь, это поможет!

+0

Этот код также ломается .ExpandEnvironmentStrings с «ошибкой отказа доступа» для учетных записей без администратора. Похоже, что стандартный пользователь не может получить доступ к переменным среды. – Machinegon

Смежные вопросы