Getting a list of user profiles on a computer in C++ Win32

后端 未结 3 1180
广开言路
广开言路 2020-12-03 23:34

What is the best way to enumerate all of the user profiles on a computer?

I know how to get the currently logged in user profile, and I know how to get the \"all use

相关标签:
3条回答
  • 2020-12-03 23:44

    Before going the undocumented route like flokra suggests, I would try NetUserEnum() or NetQueryDisplayInformation()

    If you want to go into undocumented land, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList has a (incomplete) list of accounts (It's missing special accounts like ASPNET, HelpAssistant and SUPPORT_xxxx) It also has the path to the profile folder, which is a lot safer than using %ALLUSERSPROFILE%\..\ but why use it when there is GetProfilesDirectory()

    0 讨论(0)
  • 2020-12-03 23:50

    You could read in the contents of the directory one level above %ALLUSERSPROFILE%.

    Then you would have the names of all accounts that are (or were, if not deleted completely) on the system. To verify that an account still exists, I would use LsaLookupNames2. This function retrieves the SIDs that belong to account-names (deleted account == no SID).

    0 讨论(0)
  • 2020-12-03 23:56

    I'd be very careful with that, in the presence of roaming profiles. When do you count a roaming profile to be on the computer? Also, do you have sufficient rights to access it? Even Local Admins don't have rights to network accounts, only network admins do IIRC.

    0 讨论(0)
提交回复
热议问题