簡體   English   中英

使用c#獲取所有曾經登錄過PC的用戶

[英]Get all users that have ever logged into a pc with c#

我試圖檢索曾經登錄過PC的所有用戶,並將其填充到組合框中,但是在搜索后,我找不到任何好的答案。

我打算看一下:

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

但是我覺得那是不可靠的方式。

接下來,我將查看注冊表,但是在閱讀后,如果更改了用戶帳戶名,該列表將不會更新。 我知道必須在計算機上記錄所有用戶配置文件,因為我已經使用Microsoft systernals工具來管理它們。 但是我只是無法弄清楚如何使用c#進行編程。

好的,好吧,我想通了,畢竟實際上是使用WMI,這是我的代碼。

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());
     }
}

這還會返回系統帳戶IE:NT_Authority NT_System,但是可以輕松對其進行過濾。 感謝您的所有幫助。

我建議看一下WMI 它允許您在計算機上運行類似sql的查詢,以獲取大量系統信息。

VBScript的一些啟發: http : //social.technet.microsoft.com/Forums/en-US/ITCG/thread/2b99b836-ed8f-4146-89e4-947b79bf4862/

如果用戶是在本地計算機上創建的,則應該有一個用戶文件夾,如Joshua所說。

另外,您可以嘗試運行CMD的“ net user”命令,並使用類似this的方法獲取返回值。

編輯:根據下面的評論,檢查一下是否有幫助: https : //stackoverflow.com/a/8455654/1046689

您可以迭代%windir%\\ Users目錄,而忽略默認文件夾名稱(public / admin等),並從文件名中解析出用戶名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM