2010-12-21 58 views
6

是否有任何環境變量或配置文件路徑在Windows中表示的其他格式?我想以這樣的方式來查詢,我應該得到值「C:\ Documents and Settings(如果Windows XP或2k3)或C:\ users(如果Vista或Windows 7)在Windows中是否有任何表示「C: Documents and Settings」文件夾或C: Users文件夾的環境變量?

我不想當前用戶名附加到字符串,我可以拿到直通%USERPROFILE%變量

+3

正如你可以把用戶配置文件的任何地方如你可以將標記設置爲c:\ mark爲什麼你需要這個而不是USERPROFILE?還要注意最後一個目錄不一定與用戶名相同。 – Mark 2010-12-21 21:25:49

+0

是的馬克..你說的是真的。我只想知道特定用戶配置文件的位置?此外,我的環境不會「重定向」除默認位置以外的這些配置文件。 – svv 2010-12-21 21:34:21

回答

9

它不存在相反,嘗試%USERPROFILE%\..

警告:如@馬克指出,這是不可靠的,因爲用戶配置文件目錄可能真的是任意的位置

+0

%USERPROFILE%將附加當前用戶名。我想用它作爲不同的用戶名。我仍然可以通過腳本中的一些附加代碼來實現。但只是想知道有沒有更好的方法來做到這一點。 – svv 2010-12-21 21:30:10

2

據我所知不,但你可以做最後一個'/'的實例找到父親的可怕%USERPROFILE%

3

在Vista +上,您可以使用FOLDERID_UserProfiles來獲取C:\ Users(或任何可能在本地化版本等)。在XP和更早版本中,你幾乎必須去CSIDL_COMMON_DESKTOPDIRECTORY路由,它會給你「C:\ Documents and Settings \ All Users \ Desktop」,並從那裏開始工作。

我認爲這解決了它的Vista。對於XP來說,解決方案並不完美,但至少它不會取決於當前用戶的配置文件路徑。 「所有用戶」將一直存在,我想不出它是否在默認的地方。

2

呀實際上有辦法得到它的工作:

%USERPROFILE%\.. 
0

我得到的批次和VBS方法(下),因爲我無法找到一個等效的批處理或VBS方法這個問題的任何地方其他。如果我不應該把它添加到這個線程(jscript),請添加一條關於它應該如何/在哪裏的評論,並且我將刪除這個答案並按照指示發佈。 :)

批次(單線 - 沒有回車):

for /f "tokens=2*" %%f in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory ^|find /i "Profiles"') do @set ProfDir=%%g 

的VBScript:

' http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/registry/#ListRegFiles.htm 

const HKEY_LOCAL_MACHINE = &H80000002 
strComputer = "." 
Set StdOut = WScript.StdOut 

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
strComputer & "\root\default:StdRegProv") 
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" 
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath,_ 
arrValueNames, arrValueTypes 

For i=0 To UBound(arrValueNames) 
' StdOut.WriteLine "File Name: " & arrValueNames(i) & " -- " 
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,_ 
    arrValueNames(i),strValue 
' StdOut.WriteLine "Location: " & strValue 
' StdOut.WriteBlankLines(1) 
    IF arrValueNames(i) = "ProfilesDirectory" THEN ProfileRoot= strValue 
Next 

wscript.echo("ProfileRoot=" & ProfileRoot) 
相關問題