2010-08-05 84 views
1

我试图检索Windows首次加载(XP,Vista和7)时实际可见的登录帐户。在VB6中枚举Windows“登录屏幕”用户帐户

我能够所有账户枚举(感谢这个代码:freevbcode.com),然而这特定的功能列举所有系统用户帐户(管理员,客户,HomeGroupUser $,LogMeInRemoteUser等),无论它们出现在日志是否在屏幕上。我如何区分可见和不可见帐户?

回答

0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList有一个列表,从中读到的DWORD和位,并与1,如果是<> 0(或没有条目在所有的用户名),则该帐户在欢迎屏幕上可见

(注意:那个注册表键和dword值的含义是没有记录的AFAIK)

+0

我在XP和7上检查了这个键,它似乎并不全面。例如,Win7仅列出了LogMeInRemoteUser帐户,忽略了其他枚举帐户,例如__vmware_user__(由VMware创建的隐藏帐户)。 进一步研究,解决方案似乎存在于许多USER_INFO结构之一中。 NetUserGetInfo API(http://msdn.microsoft.com/en-us/library/bb706729.aspx)链接到它们中的很多。但不确定哪一个会给出肯定的答案。 – 2010-08-05 18:44:22

+0

@Joe:您可能需要一些额外的检查,确保该帐户是像“管理员”或“用户”等“用户组”的成员(我认为这有些暗示,因为您需要过滤掉系统和禁用的帐户等) – Anders 2010-08-06 11:14:36