Domanda

I'm trying to retrieve all the users that have ever logged into a pc and populate them in a combobox, but after searching, I'm not finding any good answers.

I was going to look at the:

DirectoryInfo(Environment.GetEnvironmentVariable("USERPROFILE")).Parent.GetDirectories();

But I feel that is way to unreliable.

Next I was going to look at the registry, but after reading, that list will not update if a user account name has ever been changed. I know there has to be a record of all the user profiles on a machine, because I have used Microsoft systernals tools to manage them. but I just cannot figure out how to do it programatically with c#.

È stato utile?

Soluzione

Ok, well, i figured this out, actually with WMI after all, here is my code.

using System.Security.Principal;
using System.Management;
private void GetLocalUserAccounts()
{
     SelectQuery query = new SelectQuery("Win32_UserProfile");
     ManagementObjectsSearcher searcher = new ManagementObjectSearcher(query);
     foreach (ManagementObject sid in searcher.Get())
     {
          MessageBox.Show(new SecurityIdentifier(sid["SID"].ToString()).Translate(typeof(NTAccount)).ToString());
     }
}

This also returns the system accounts IE: NT_Authority NT_System, but those can be filtered easily. Thanks for all the help.

Altri suggerimenti

I would suggest to take a look at WMI. It allows you to run sql-like queries on a machine to get loads of system informations.

Some inspiration in VBScript : http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/2b99b836-ed8f-4146-89e4-947b79bf4862/

If the user is created on the local machine, it should have a user folder, as Joshua said.

Also, you could try running CMD's "net user" command and capturing the return value using something like this.

Edit: per the comments below, check this out and see if it helps: https://stackoverflow.com/a/8455654/1046689

You could iterate the %windir%\Users directory ommitting default folder names (public/admin etc) and parse out the usernames from the filenames

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top