C#查看当前电脑所有用户包括域用户
时间: 2023-08-10 11:38:29 浏览: 53
你可以使用System.DirectoryServices.AccountManagement命名空间中的UserPrincipal类来获取当前电脑的所有用户,包括本地用户和域用户。以下是一个示例代码:
```csharp
using System.DirectoryServices.AccountManagement;
PrincipalContext context = new PrincipalContext(ContextType.Machine);
UserPrincipal userPrincipal = new UserPrincipal(context);
PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal);
foreach (var result in searcher.FindAll())
{
if (result is UserPrincipal user)
{
Console.WriteLine($"Username: {user.SamAccountName}, Full Name: {user.DisplayName}");
}
}
```
这个代码创建一个机器上下文,然后使用UserPrincipal类来搜索所有用户。最后,它遍历结果并打印出每个用户的SAM账户名和显示名称。
相关问题
c#查看当前电脑所有登录过的用户
您可以使用以下代码来获取当前电脑所有登录过的用户列表:
```csharp
using System;
using System.Collections.Generic;
using System.DirectoryServices.AccountManagement;
// 获取当前电脑所有用户列表
List<string> userList = new List<string>();
PrincipalContext context = new PrincipalContext(ContextType.Domain);
UserPrincipal userPrincipal = new UserPrincipal(context);
userPrincipal.Enabled = true;
PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal);
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
if (de != null)
{
string userName = de.Properties["samAccountName"].Value.ToString();
userList.Add(userName);
}
}
// 输出用户列表
foreach (string user in userList)
{
Console.WriteLine(user);
}
```
这段代码使用了 `System.DirectoryServices.AccountManagement` 命名空间中的 `PrincipalContext` 和 `UserPrincipal` 类来获取当前电脑所有的用户列表,并将其存储在一个 `List<string>` 中。然后,使用 foreach 循环输出用户列表。
请注意,此代码仅适用于 Windows 身份验证,并且可能需要在管理员权限下运行。
c# api 设置全局当前用户
您可以使用以下代码来设置全局当前用户:
```csharp
using System.Security.Principal;
// 设置当前用户
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
```
这将设置当前用户为 Windows 身份验证中的当前用户,并将其用作应用程序域和线程的主体。请注意,这仅适用于 Windows 身份验证,并且可能需要在管理员权限下运行。