获取服务中的用户SID

问题描述:

我需要读取存储在位于HKEY_CURRENT_USER下的注册表项中的软件许可证。获取服务中的用户SID

我正在SYSTEM帐户中的服务中运行,所以无法读取此密钥。

我发现这个注册表项在HKEY_USER有一个帐户,我可以在那里读取信息。但我需要找出登录用户的SID。

如何从德尔福的一个服务中找到这个?

+1

为什么不模拟用户调用服务并读取注册表项? – Remko

+0

哪个用户登录?可能有几个。或者没有。 –

拨打LookupAccountName以获取属于给定用户名(及其所属域)的SID。可以使用ConvertSidToStringSid将SID转换为字符串。可以使用Delphi Jedi Windows Security Code Library(JWSCL)。

+1

您可以使用'WTSEnumerateSessions()'发现登录的会话,'WTSQuerySessionInformation()'检索这些会话的用户名+域,然后调用'LookupAccountName()'。另一个选项是枚举正在运行的进程,直到发现运行在所需会话中的一个(通常为Explorer),然后打开进程的句柄,获取其进程标记并查询它的登录SID。 –

+0

请问,如何使用LookupAccountName。 O名称用户活动,找到函数JEDI库“GetInteractiveUserName”。 –

+0

解决方案http://pasotech.altervista.org/delphi/articolo24.htm –