Hi 大家好,我想问一个问题,怎么在程序里获取到用户最后一次登录的时间?
注意是:是我们现在用的电脑的真实的登录用户,不是程序里的用户。
我用的方法是:
http://technet.microsoft.com/zh-cn/subscriptions/aa394221 微软的Win32 的API。。
public static List<string> GetSysUserNames()
{
List<string> temp = new List<string>();
string iuser = "";
string lastLogin = "";
GetLastLoginTime = new List<string>();
ConnectionOptions options = new ConnectionOptions();
options.Impersonation = ImpersonationLevel.Impersonate;
options.EnablePrivileges = true;
ManagementScope scope = new ManagementScope("\\root\\cimv2", options);
scope.Options.EnablePrivileges = true;
scope.Options.Impersonation = ImpersonationLevel.Impersonate;
scope.Connect();
SelectQuery query = new SelectQuery("Select * from Win32_NetworkLoginProfile ");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementBaseObject useraccount in searcher.Get())
{
iuser = useraccount["Name"].ToString();
if (!iuser.Trim().StartsWith("NT AUTHORITY") && !iuser.Trim().Equals(""))
{
if (useraccount["LastLogon"] == null)
{
lastLogin = "00/00/0000";
}
else
{
if (useraccount["LastLogon"].ToString().Contains("*"))
{
lastLogin = "00/00/0000";
}
else
{
lastLogin = useraccount["LastLogon"].ToString().Substring(0, 8);
}
}
GetLastLoginTime.Add(CastLastLoginFormat(lastLogin));
temp.Add(iuser);
}
}
return temp;
}
但是这里的运用在Win7 下面获取到的时间是不正确的呢,但是在XP下面是正确的呢!~~~~~很郁闷啊很郁闷,看看谁还有更好的办法????
想了好久啊,貌似真的没有办法啦~~~~
谢谢大家了。。分只能到200.。木有办法啦。
是不是可以通过读windows系统日志中的登录事件来获取登录时间?
搜一下“C#读取Windows日志”
http://hi.baidu.com/study_discuss/item/86abf0f97b638ac30dd1c896
C#。。。
不是运用程序!~~~是获取咱电脑上的用户的最后登录时间。。。
用户每次登陆就记录登录时间写入数据库 这样获取最后一次登录时间就很easy了 楼主你说呢?
是我们现在用的电脑的真实的登录用户,不是程序里的用户。
不是运用程序!~~~是获取咱电脑上的用户的最后登录时间。。。
估计是在 注册表里 吧
是否是权限的缘故
这个还真是个问题,不是有操作日志吗?
是winform还是webform?登录时间应该在系统事件的日志里。