是否有任何环境变量或配置文件路径在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