我一直在尝试查看各种.NET类库,以便在某些地方可以获取本地计算机的登录用户(无论是否连接到域).至今System.Security.Principal.WindowsPrincipal LoggedUser = System.Threading.Thread.CurrentPrincipal as Syste...
我一直在尝试查看各种.NET类库,以便在某些地方可以获取本地计算机的登录用户(无论是否连接到域).
至今
System.Security.Principal.WindowsPrincipal LoggedUser = System.Threading.Thread.CurrentPrincipal as
System.Security.Principal.WindowsPrincipal;
// This returns the username
LoggedUser.Identity.Name
这将返回用户的名称,但是可以通过任何方式获取会话详细信息,在AD或用户登录后会看到的内容,会话持续时间等.用户的上下文,诸如工作站锁定等操作,状态基本上是用户的
如果您有任何想法,将不胜感激.
提前致谢.
解决方法:
您可以使用System.DirectoryServices名称空间通过LDAP查询在Active Directory中查询所需的许多数据.例如,下面的示例显示了用户的上次登录时间.
当然,这仅适用于域用户.
using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace ADMadness
{
class Program
{
static void Main(string[] args)
{
DirectorySearcher search = new DirectorySearcher("LDAP://DC=my,DC=domain,DC=com");
search.Filter = "(SAMAccountName=MyAccount)";
search.PropertiesToLoad.Add("lastLogonTimeStamp");
SearchResult searchResult = search.FindOne();
long lastLogonTimeStamp = long.Parse(searchResult.Properties["lastLogonTimeStamp"][0].ToString());
DateTime lastLogon = DateTime.FromFileTime(lastLogonTimeStamp);
Console.WriteLine("The user last logged on at {0}.", lastLogon);
Console.ReadLine();
}
}
}
沃梦达教程
本文标题为:在C#中获取本地Windows用户登录会话时间戳
猜你喜欢
- C#正则表达式与HashTable详解 2023-06-21
- C# 连接本地数据库的实现示例 2023-05-26
- 详解WPF中的隧道路由和冒泡路由事件 2023-04-10
- 关于C# 调用Dll 传递字符串指针参数的问题 2023-05-12
- C#如何从byte[]中直接读取Structure实例详解 2023-01-16
- C#执行存储过程并将结果填充到GridView的方法 2022-11-02
- 详解C#之事件 2023-02-17
- c#项目实现发布到服务器全过程 2023-07-18
- C#中IDispose接口的实现及为何这么实现详解 2022-12-11
- 在Linux机器上运行C#应用程序时,SOAP身份验证失败 2023-11-16
