2009-05-24 133 views

回答

20

這裏的(從here採取)的例子:

Set oShell = CreateObject("WScript.Shell") 
user=oShell.ExpandEnvironmentStrings("%UserName%") 
comp=oShell.ExpandEnvironmentStrings("%ComputerName%") 
WScript.Echo user & " " & comp 
7

here ...

Set WshShell = WScript.CreateObject("WScript.Shell") 

Set WshProccessEnv = WshShell.Environment("Process") 
Set WshSysEnv = WshShell.Environment("System") 

Wscript.Echo WshSysEnv("NUMBER_OF_PROCESSORS") 
Wscript.Echo WshProccessEnv("Path") 

,多更多detail on TechNet

3
Set WshShell = CreateObject("WScript.Shell")  
Set WshEnv = WshShell.Environment 
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR") & vbCrLf & vbCrLf 
Set WshShell = CreateObject("WScript.Shell") 
WScript.Echo "Environment System:"    & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("System") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment User:"  & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("User") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Volatile:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Volatile") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Process:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Process") 
    WScript.Echo IEnv 
Next 
-1

這個工作對我來說:

Dim objNetwork 
Set objNetwork = CreateObject("WScript.Network") 
MsgBox objNetwork.UserName 

或起殼:

Set wshShell = WScript.CreateObject("WScript.Shell") 
strUserName = wshShell.ExpandEnvironmentStrings("%USERNAME%") 

或環境變量(它應該工作,b UT當我測試,這是不對的!):

Set WshShell = CreateObject("WScript.Shell") 
Set WshEnv = WshShell.Environment 
MsgBox "USERNAME=" & WshEnv.Item("USERNAME") 
+0

[CreateObject(「WScript.Network」`](https://msdn.microsoft.com/en-us/library/s6wt333f(v = vs.84).aspx)返回的對象不提供通用的環境變量訪問,它只是暴露了3個值作爲也反映在環境變量中的屬性:`ComputerName`,`UserDomain`和`UserName`。你最後一個例子不起作用的原因是`WshShell。 Environment`與`WshShell.Environment(「System」)`相同,並且'%USERNAME%`沒有在_system_作用域中定義。 – mklement0 2016-12-20 18:09:37

4

現有的答案都是有益的,但讓我嘗試務實總結

通常情況下,你想當前進程的的定義環境變量

CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") 

這是相當於(注意沒有% ARO的UND變量名):

CreateObject("WScript.Shell").Environment("Process").Item("TEMP") 

買者:不要遺漏("Process)部分:如果你這樣做,你會得到的變量系統範圍的定義;見下文。

.ExpandEnvironmentStrings是概念性地更簡單和更靈活:它可以擴大任意串與嵌入% -enclosed)環境變量的引用;例如: -

CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%") 

在極少數情況下,你可能不得不接入環境變量的定義從特定範圍(比當前進程的除外)。

sScope = "System" ' May be: "Process", "User", "Volatile", "System" 
    CreateObject("WScript.Shell").Environment(sScope).Item("TEMP") 

注意:如上所述,省略scope參數默認爲System範圍。

買者:訪問值這樣不擴大它:環境變量的值可以是嵌套:可以參考其他環境變量。
在上面的示例中,返回值爲%SystemRoot%\TEMP,其中包含未擴展的%SystemRoot%的引用。
要展開結果,請將其傳遞到.ExpandEnvironmentStrings(),如上所示。

相關問題