2011-06-28 32 views

回答

2

铭记每一个本地或域用户可以有自己的路径,你可以查询Win32_Environment类:

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objSWbemLocator = objSWbemLocator.ConnectServer(strComputer, _ 
    "root\CIMV2", _ 
    strUser, _ 
    strPass) 

Set colItems =objSWbemLocator.ExecQuery("SELECT * FROM Win32_Environment WHERE Name='TEMP' AND SystemVariable=FALSE AND username='machine_or_domain_name\\user_whos_temp_path_you_require'", "WQL", 48) 

For Each objItem In colItems 
    msgbox objItem.VariableValue 
Next 
+0

亚历克斯,任何想法,为什么相同的方法不会让我%USERPROFILE%变量?我只是将'Name ='TEMP''改为'Name ='USERPROFILE''。 使用你的代码我能够得到“%USERPROFILE%\ Local Settings \ Temp”。 – kishkin

+0

是的,它没有扩展,也没有通过Win32_Environment可用,你想用它做什么? “%USERPROFILE%”在目标机器上有效 –

+0

也许我需要绝对路径。尚未确定。只是有趣。 – kishkin

0

我不是很肯定,但你试过用“%TEMP%”变量作为远程文件夹字符串?我认为Windows自动将其扩展到机器上配置的临时文件夹。

+0

我认为它会在本地解释。我需要一条绝对路径。不管怎么说,还是要谢谢你。 – kishkin

+0

不可以。因为它是服务器连接,所以文件夹字符串也可以被远程解释。此外,一旦你连接到文件夹,你可以得到目前的工作目录吗? – Sterex

+0

“你连接到文件夹”是什么意思? – kishkin