gpt4 book ai didi

windows - 如何使用 Windows Powershell 检索不同本地用户的主目录/配置文件路径

转载 作者:行者123 更新时间:2023-12-05 01:49:16 25 4
gpt4 key购买 nike

我不是在寻找“$env:HOMEDIR”,而是在寻找一种方法来查询不同用户帐户的主目录。相当于“~bob”的 powershell。

我尝试使用 [ADSI]:

# After creating a local account called 'other.user'
PS> $user = [ADSI]'WinNT://localhost/other.user,user'
PS> $user.name
other.user
PS> $user.HomeDirectory

PS>

即使在提升的 powershell 中从管理员帐户执行。

为了理智,我尝试对现有用户进行相同的检查:

PS> $user = [ADSI]('WinNT://localhost/{0},user' -f [Environment]::UserName)
PS> $user.name
this.user # paraphrase
PS> $user.HomeDirectory

PS> $user.properties.HomeDirectory

PS>

最佳答案

你可以结合Get-CimInstanceGet-LocalUser :

$userName = 'other.user'
(
Get-CimInstance Win32_UserProfile -Filter "SID = '$((Get-LocalUser $userName).Sid)'"
).LocalPath

这会输出目标用户的个人资料目录的路径,例如C:\Users\other.user

注意:个人资料目录通常,但不一定与用户的 目录 - 后者可以配置为指向其他地方,例如网络共享,并反射(reflect)在当前用户的环境变量中,HOMEDRIVEHOMEPATH


获取真正的home目录:

  • 如果目标用户存储在 Active Directory 中,则以下可能有效(未经测试):

    $userName = 'other.user'
    $user = Get-ADUser $userName -Property HomeDrive, HomeDirectory
    '{0}{1}' -f $user.HomeDrive, $user.HomeDirectory
  • 对于本地用户:

    • 鉴于 HOMEDRIVEHOMEPATH 环境变量是动态添加到注册表,当该用户登录到窗口站(创建操作系统 session )时,在 HKEY_CURRENT_USER\Volatile Environment 下。相比之下,如果您按需将另一个用户的配置文件(位于用户配置文件目录中的隐藏 NTUSER.DAT 文件)加载到注册表中,例如通过 reg.exe load 或通过 CreateProcessWithLogon() WinAPI 函数(也被 runas.exe[1] 使用),添加这些值。

    • 如果有人知道主目录信息是否包含在用户配置文件的非 volatile 信息中以及位于何处(加载后可通过注册表访问),请告诉我们知道。


至于你尝试了什么:

System.DirectoryServices.DirectoryEntry的相关属性(其类型加速器是 [adsi])实例应该.Profile.HomeDirDrive/。 HomeDirectory,但至少在我的 Windows 10 机器上它们没有填充;例如:

PS> ([adsi] 'WinNT://localhost/jdoe,user') | Format-List *

# ...
HomeDirectory : {}
# ...
Profile : {}
HomeDirDrive : {}
# ...

[1] 请注意类似 runas.exe/profile/user:$userName cmd/c echo %HOMEDRIVE%HOMEPATH% 的效果报告 %HOMEDRIVE% 作为 C:%HOMEPATH% 作为 \Windows\System32(!),基于 CreateProcessWithLogon() 的行为,奇怪的是,它将这些变量设置为启动进程的工作目录,默认为 C:\Windows\System32

关于windows - 如何使用 Windows Powershell 检索不同本地用户的主目录/配置文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74281761/

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