2009-11-05 91 views

回答

1

在研究了一點之後,我相信沒有辦法使用環境變量來捕獲另一個用戶的%TEMP%文件夾(在本例中是系統用戶)的位置。

1
Set objShell = CreateObject("WScript.Shell") 
Set colEnvironment = objShell.Environment("PROCESS") 
objPath = colEnvironment("temp") 
WScript.Echo objPath  

在這種情況下

Set objShell = CreateObject("WScript.Shell") 
Set colEnvironment = objShell.Environment("PROCESS") 
objPath = colEnvironment("windir") 
WScript.Echo objPath & "\temp"  

希望這將有助於

+0

這似乎仍然是返回「我的」臨時目錄。而不是系統目錄。例如在WinXP上我期待得到「C:\ WINSOWS \ Temp」而不是我自己的臨時目錄。 – Mike 2009-11-05 12:09:13

+0

「windir」是否與其他操作系統一致? Server2008上運行的服務仍然使用%winddir%\ Temp? – Mike 2009-11-05 12:15:31

+0

您也可以使用「systemroot」而不是「windir」。這些都是系統默認的環境變量,據我所知,這不應該隨着新版本的Windows而改變,否則在升級服務器時,所有以前安裝的應用程序(使用這些環境變量)將會失敗。 – IsmailS 2009-11-05 13:07:07

-1

在C#中,其...

System.Collections.IDictionary瓦爾=系統.Environment.GetEnvironmentVariables();

String TempPath = Vars [「TEMP」];

你得到的元素...路徑,溫度,SESSIONNAME,PATHEXT,用戶網域,系統驅動,WINDIR等的整個陣列...

+0

在C#中我更喜歡使用:Path。GetTempPath() – Mike 2009-11-05 13:55:15

+0

是的,然而,像這樣的東西會向其他人揭露他們可能不知道的更大的一組元素。 System.Environment區域中有很多可用的東西。 – DRapp 2009-11-05 14:38:03

+2

我認爲解決方案在vbscript中是必需的。 – IsmailS 2009-11-06 06:44:49

2

在這裏你去(在VBS)

Set environmentVars = WScript.CreateObject("WScript.Shell").Environment("Process") 
tempFolder = environmentVars("TEMP") 
msgbox(tempFolder) 

我不知道,如果你的系統中有一個名爲「TEMP」環境變量,所以去命令行,然後鍵入

set 

你會得到環境瓦爾的列表,以及它們的值。選擇一個有你的臨時文件夾的人。

1

系統環境變量存儲在註冊表項:HKEY_LOCAL_MACHINE \ SYSTEM \用戶ControlSet001 \控制\會話管理\環境

環境變量存儲在註冊表項中:HKEY_USERS [用戶SID] \環境

爲了獲取任何環境變量(特別是TEMP)的值,需要檢查分支中是否存在指定用戶的此變量。如果它在那裏,那麼你可以使用它。如果它不在那裏,那麼你需要從系統註冊表分支獲取一個值。