gpt4 book ai didi

vbscript - 如何使用 VBScript 获取或检索与当前用户的桌面文件夹不同的用户桌面文件夹?

转载 作者:行者123 更新时间:2023-12-04 14:42:33 24 4
gpt4 key购买 nike

在 Windows 计算机上有三个用户:AdministratorUserAUserB

当我以 Administrator 身份登录时,如何分别检索到 UserA 的桌面文件夹和 UserB 的路径?

我正在寻找将在 Windows 7 和 Windows Server 2008 上运行的 VBScript。

我尝试了 SpecialFolders("Desktop"),但这返回了 Administrator 的桌面文件夹路径,而不是 UserA 的桌面文件夹路径>.

因此,我想获取 C:\Users\UserA\DesktopC:\Users\UserB\Desktop 的路径。

也在寻找一种方法来检索 UserAUserB 的文件夹 Start Menu\Programs

最佳答案

为什么每个人都这么快就说这是不可能的?使用 WMI 可以很容易地做到这一点。

我已将脚本分解成多个部分,这样您就可以看到我是如何执行每个步骤的。

arrAccounts = Array("UserA", "UserB")

For Each strUser in arrAccounts
WScript.Echo GetUserDesktop(GetSID(strUser))
Next

Function GetUserDesktop(strSID)
Const HKEY_USERS = &H80000003

strComputer = "."
Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\default:StdRegProv")
strKeyPath = strSID & "\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
strValueName = "Desktop"
objRegistry.GetStringValue HKEY_USERS, strKeyPath, strValueName, strValue
GetUserDesktop = strValue
End Function

Function GetSID(strUser)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

' Get the computer name (using WMI)
For Each objComputer In objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
strComputerName = objComputer.Name
Exit For
Next

' You could just as easily do this...
' strComputerName = CreateObject("WScript.Network").ComputerName

Set objAccount = objWMIService.Get _
("Win32_UserAccount.Name='" & strUser & "',Domain='" & strComputerName & "'")
GetSID = objAccount.SID
End Function

请注意,Microsoft 建议不要使用注册表来确定用户 shell 文件夹的位置。不能保证此方法在未来的 Windows 版本中继续有效,但它确实适用于您打算定位的版本,所以为什么不使用它呢?

关于vbscript - 如何使用 VBScript 获取或检索与当前用户的桌面文件夹不同的用户桌面文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com