如何在powershell上的admin中读取另一个用户的HKCU注册表项?

问题描述 投票:0回答:2

我有一个通过 TaskScheduler 自动运行的 PowerShell 脚本,其目的是获取系统所有软件套件的版本,以便制作一个列表并快速了解过时版本的概述。问题是为了让它随时运行,脚本被分配给SYSTEM用户。然而,某些应用程序仅分配给一个用户,SYSTEM 无法在其 HKCU 密钥中找到它们。

那么问题来了,如何列出所有内容呢?

windows powershell registry
2个回答
1
投票

您需要先加载他们的蜂巢

REG LOAD HKEY_Users\johnshive "C:\Users\john\NTUSER.DAT" 

然后您可以通过 powershell 来寻址他们的蜂巢,例如

Get-ChildItem -Path Registry::HKEY_USERS\johnshive

1
投票

如果该人已登录,您必须进入 HKU 并找到所有以“_Classes”结尾的注册表项。然后从这些键的末尾删除“_Classes”,这就是属于用户的可能键的列表。如果只有一个,并且您知道该人已登录,那么这可能就是他们的密钥。但是,如果有多个,那么您将获得大部分空的幽灵副本,其中 Windows 无法完全卸载它。老实说,幽灵副本不会有值为“USERNAME”的子项“Volatile Environment”,但我怀疑这不是一个真实的陈述。我已经让 PsLoggedon.exe 报告有两个用户登录,但直到后来我才知道 PsLoggedon.exe 使用 HKU 来查找登录的用户(不确定它使用哪些子项和值)。

但是如果用户没有登录,就不要走这条路,除非你是一个非常注重细节的人。如果您加载他们的注册表配置单元,完成工作,然后忘记卸载他们的注册表配置单元,您将锁定他们的注册表配置单元文件,Windows 会认为配置文件已损坏,构建新的用户配置文件,用户将登录发现文档文件夹为空,并且认为他们的文件消失了。在对实际用户配置文件执行此操作之前,我做了很多实验,将映射的网络驱动器注入到测试用户的注册表配置单元文件中。

© www.soinside.com 2019 - 2024. All rights reserved.