如何将vbscript作为';管理员';但访问当前登录用户VBSCRIPT的APPDATA文件夹

如何将vbscript作为';管理员';但访问当前登录用户VBSCRIPT的APPDATA文件夹,vbscript,appdata,Vbscript,Appdata,我尝试访问APPDATA文件夹,该文件夹的功能与以下代码完全一致(以当前登录用户身份运行): sAppDataPath的结果是:C:\Users\Peter\AppData\Roaming 现在的问题是,我必须以管理员帐户的身份运行脚本。如果我以管理员身份在客户端上运行此脚本,则结果如下: C:\Users\Administrator\AppData\Roaming 我怎样才能改变这一点?我希望,他应该采用当前登录用户的Appdata文件夹路径。尽管以管理员身份运行脚本。由于某些权限,我必须以管

我尝试访问APPDATA文件夹,该文件夹的功能与以下代码完全一致(以当前登录用户身份运行):

sAppDataPath的结果是:C:\Users\Peter\AppData\Roaming

现在的问题是,我必须以管理员帐户的身份运行脚本。如果我以管理员身份在客户端上运行此脚本,则结果如下: C:\Users\Administrator\AppData\Roaming

我怎样才能改变这一点?我希望,他应该采用当前登录用户的Appdata文件夹路径。尽管以管理员身份运行脚本。由于某些权限,我必须以管理员身份运行脚本


我如何认识到这一点?

单靠VBS无法做到这一点

您需要创建一个批处理文件,将此
%APPDATA%
环境变量作为参数传递到脚本中,然后修改VBS脚本以处理此参数

样本如下:

更新:

如果您不介意人们能够打开批处理文件并知道您打算作为其运行的用户帐户的密码,请使用更新的批处理文件内容(假设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
批处理文件(更新)


谢谢你的回答。你的样品不起作用。如果我使用其他用户运行批处理文件,则msgbox包含其他用户的appdata路径,而不是当前登录用户的路径。
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
@echo off
C:\SysInt\psexec.exe -u %computername%\administrator -p AccountPassword -e wscript.exe "c:\debug\vbs\test.vbs" %appdata%