是否有任何環境變量或配置文件路徑在Windows中表示的其他格式?我想以這樣的方式來查詢,我應該得到值「C:\ Documents and Settings(如果Windows XP或2k3)或C:\ users(如果Vista或Windows 7)在Windows中是否有任何表示「C: Documents and Settings」文件夾或C: Users文件夾的環境變量?
我不想當前用戶名附加到字符串,我可以拿到直通%USERPROFILE%變量
是否有任何環境變量或配置文件路徑在Windows中表示的其他格式?我想以這樣的方式來查詢,我應該得到值「C:\ Documents and Settings(如果Windows XP或2k3)或C:\ users(如果Vista或Windows 7)在Windows中是否有任何表示「C: Documents and Settings」文件夾或C: Users文件夾的環境變量?
我不想當前用戶名附加到字符串,我可以拿到直通%USERPROFILE%變量
它不存在相反,嘗試%USERPROFILE%\..
警告:如@馬克指出,這是不可靠的,因爲用戶配置文件目錄可能真的是任意的位置
%USERPROFILE%將附加當前用戶名。我想用它作爲不同的用戶名。我仍然可以通過腳本中的一些附加代碼來實現。但只是想知道有沒有更好的方法來做到這一點。 – svv 2010-12-21 21:30:10
據我所知不,但你可以做最後一個'/'的實例找到父親的可怕%USERPROFILE%
在Vista +上,您可以使用FOLDERID_UserProfiles來獲取C:\ Users(或任何可能在本地化版本等)。在XP和更早版本中,你幾乎必須去CSIDL_COMMON_DESKTOPDIRECTORY路由,它會給你「C:\ Documents and Settings \ All Users \ Desktop」,並從那裏開始工作。
我認爲這解決了它的Vista。對於XP來說,解決方案並不完美,但至少它不會取決於當前用戶的配置文件路徑。 「所有用戶」將一直存在,我想不出它是否在默認的地方。
呀實際上有辦法得到它的工作:
%USERPROFILE%\..
我得到的批次和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)
正如你可以把用戶配置文件的任何地方如你可以將標記設置爲c:\ mark爲什麼你需要這個而不是USERPROFILE?還要注意最後一個目錄不一定與用戶名相同。 – Mark 2010-12-21 21:25:49
是的馬克..你說的是真的。我只想知道特定用戶配置文件的位置?此外,我的環境不會「重定向」除默認位置以外的這些配置文件。 – svv 2010-12-21 21:34:21