2014-02-02 5 views
0

Я попытался получить доступ к папке APPDATA, которая отлично работает со следующим кодом (запускается как текущий пользователь входа в систему):Как я могу запустить vbscript как «Администратор», но получить доступ к папке APPDATA текущего пользователя входа в систему VBSCRIPT

Set objShellApp = CreateObject("Shell.Application") 

Const ssfAPPDATA = &H1A 
sAppDataPath = objShellApp.NameSpace(ssfAPPDATA).Self.Path 

результат sAppDataPath является: C: \ Users \ Питер \ AppData \ Roaming

Теперь проблема в том, что я должен запустить скрипт в качестве учетной записи администратора. И если я запускаю этот скрипт в качестве администратора на клиентах, чем результат будет ВСЕГДА следующее: C: \ Users \ Administrator \ AppData \ Roaming

Как я могу изменить это? Я хочу, чтобы он взял путь к папке Appdata текущего пользователя входа. Несмотря на запуск сценария в качестве администратора. И я должен запустить сценарий как Администратор из-за некоторого разрешения.

Как я могу это понять?

ответ

0

Невозможно сделать это только с помощью VBS.

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

Пример ниже:

UPDATE:

Если вы не возражаете, люди, будучи в состоянии открыть пакетный файл и знать пароль учетной записи пользователя, которую вы собираетесь Run As, получить psexec.exe from MS с обновлено содержание пакетный файл (предполагается, что psexec.exe хранится в C:\SysInt\):

VBS Файл

Dim sTxt 
sTxt = WScript.Arguments.Count & " arguments passed into vbs:" 
sTxt = sTxt & JoinArgs 
wscript.echo sTxt 

Function JoinArgs() 
    Dim sTmp 
    sTmp = "" 
    For Each oArg In Wscript.Arguments 
     sTmp = sTmp & vbCrLf & oArg 
    Next 
    JoinArgs = sTmp 
End Function 

Batch File (ОБНОВЛЕНО)

@echo off 
C:\SysInt\psexec.exe -u %computername%\administrator -p AccountPassword -e wscript.exe "c:\debug\vbs\test.vbs" %appdata% 
+0

Спасибо за ваш ответ. Ваш образец не работает. Если я запускаю командный файл с пользователем antoher, то msgbox содержит путь appdata другого пользователя, а не текущего пользователя входа в систему. –