在Python中从注册表读取HKEY CURRENT USER,指定用户
在我的应用程序中,我在几个不同的用户帐户下运行子进程。我需要能够读取这些子进程写入注册表的一些信息。每个人都在给HKEY_当前用户写信,我知道他们使用的用户帐户名 在Python中,如何从特定用户的HKEY_CURRENT_USER读取值?我假设我需要以某种方式加载用户名下的注册表值,然后从那里读取它们,但是如何读取呢在Python中从注册表读取HKEY CURRENT USER,指定用户,python,windows,registry,Python,Windows,Registry,在我的应用程序中,我在几个不同的用户帐户下运行子进程。我需要能够读取这些子进程写入注册表的一些信息。每个人都在给HKEY_当前用户写信,我知道他们使用的用户帐户名 在Python中,如何从特定用户的HKEY_CURRENT_USER读取值?我假设我需要以某种方式加载用户名下的注册表值,然后从那里读取它们,但是如何读取呢 编辑:为了确保清楚,我的Python程序是以管理员身份运行的,我有“user1”、“user2”和“user3”帐户,每个帐户都有自己的HKEY_当前用户中的信息。作为管理员,如
编辑:为了确保清楚,我的Python程序是以管理员身份运行的,我有“user1”、“user2”和“user3”帐户,每个帐户都有自己的HKEY_当前用户中的信息。作为管理员,如何读取user1的HKEY_当前用户数据?HKEY_当前用户映射到HKEY_用户\{id}密钥
尝试通过将HKEY_USERS{id}\Volatile Environment\USERNAME密钥与用户的用户名匹配(通过枚举/迭代系统上存在的{id}来查找id)。找到匹配项时,只需使用HKEY_用户{id},就像它是HKEY_当前用户一样HKEY_当前用户映射到HKEY_用户\{id}键 尝试通过将HKEY_USERS{id}\Volatile Environment\USERNAME密钥与用户的用户名匹配(通过枚举/迭代系统上存在的{id}来查找id)。当您找到匹配项时,只需使用HKEY_用户{id},就像它是HKEY_当前用户一样根据,
HKEY_当前用户
是指向当前用户的HKEY_用户/SID的指针。您可以使用查找SID以查找帐户名。一旦您有了这个,您就可以使用open并在模块中使用注册表项
根据,HKEY\U CURRENT\U USER
是指向当前用户的HKEY\U USERS/SID的指针。您可以使用查找SID以查找帐户名。一旦您有了这个,您就可以使用open并在模块中使用注册表项
如果您不想安装win32 stuff for Python,并且已经在使用子进程,那么可以运行内置的Windows命令来获取您要查找的注册表数据
要查询特定用户的SID,请执行以下操作:
wmic用户帐户,其中name='John'获取sid
然后,您可以使用该SID查询该特定用户的其他注册表项:
reg查询HKEY\U用户\[SID]
例如,如果您想知道特定用户安装的网络驱动器:
reg query HKEY_用户\S-1-5-21-4205028929-649740040-1951280400-500\Network/S/v RemotePath
输出将如下所示:
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\R
RemotePath REG_SZ \\MACHINENAME1\shared
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\T
RemotePath REG_SZ \\MACHINENAME2\testing
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\V
RemotePath REG_SZ \\MACHINENAME3\videos
End of search: 3 match(es) found.
在Python中解析它应该相对简单
参考资料:
如果您不想安装win32 stuff for Python,并且由于您已经在使用子流程,您可以运行内置的Windows命令来获取您要查找的注册表数据
要查询特定用户的SID,请执行以下操作:
wmic用户帐户,其中name='John'获取sid
然后,您可以使用该SID查询该特定用户的其他注册表项:
reg查询HKEY\U用户\[SID]
例如,如果您想知道特定用户安装的网络驱动器:
reg query HKEY_用户\S-1-5-21-4205028929-649740040-1951280400-500\Network/S/v RemotePath
输出将如下所示:
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\R
RemotePath REG_SZ \\MACHINENAME1\shared
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\T
RemotePath REG_SZ \\MACHINENAME2\testing
HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network\V
RemotePath REG_SZ \\MACHINENAME3\videos
End of search: 3 match(es) found.
在Python中解析它应该相对简单
参考资料:
这也是我提出的解决方案,但我希望得到一些更“正确”的东西——卢卡斯的建议更具体一些。我不得不同意:)。他的答案更可靠。我给这个a+,因为它在Python之外工作,不需要额外的程序——这个想法在任何平台上都适用。这也是我提出的解决方案,但我希望得到一些更“正确”的东西——看起来卢卡斯的建议更具体一些。我不得不同意:)。他的答案更可靠。我给这个a+,因为它在Python之外工作,不需要额外的程序——这个想法在任何平台上都适用。