首页新闻找找看学习计划

怎么获取用户的最后一次登录时间?

0
悬赏园豆:200 [已解决问题] 解决于 2016-05-06 14:13

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.。木有办法啦。

随风浪迹天涯的主页 随风浪迹天涯 | 小虾三级 | 园豆:932
提问于:2012-11-03 00:37
< >
分享
最佳答案
1

是不是可以通过读windows系统日志中的登录事件来获取登录时间?

搜一下“C#读取Windows日志”

收获园豆:200
向往-SONG | 老鸟四级 |园豆:4853 | 2012-11-03 19:52
其他回答(8)
0

http://hi.baidu.com/study_discuss/item/86abf0f97b638ac30dd1c896

田林九村 | 园豆:2367 (老鸟四级) | 2012-11-03 08:02

C#。。。

不是运用程序!~~~是获取咱电脑上的用户的最后登录时间。。。

支持(0) 反对(0) 随风浪迹天涯 | 园豆:932 (小虾三级) | 2012-11-03 11:21
0

用户每次登陆就记录登录时间写入数据库  这样获取最后一次登录时间就很easy了 楼主你说呢?

oppoic | 园豆:560 (小虾三级) | 2012-11-03 10:31

是我们现在用的电脑的真实的登录用户,不是程序里的用户。


不是运用程序!~~~是获取咱电脑上的用户的最后登录时间。。。

支持(0) 反对(0) 随风浪迹天涯 | 园豆:932 (小虾三级) | 2012-11-03 11:20
0

估计是在 注册表里 吧

marco hsu | 园豆:141 (初学一级) | 2012-11-03 13:02
0

是否是权限的缘故

sym_cn | 园豆:798 (小虾三级) | 2012-11-04 22:01
0
羽商宫 | 园豆:2493 (老鸟四级) | 2012-11-04 22:22
0

这个还真是个问题,不是有操作日志吗?

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-11-05 10:26
0

是winform还是webform?登录时间应该在系统事件的日志里。

卓酷 | 园豆:65 (初学一级) | 2012-11-05 15:44
0

既然xp 有winapi

那win7肯定也有,楼主可以去找下看有没有这些API来解决这样的问题。根据不同的系统用不同的api.

````` | 园豆:14268 (专家六级) | 2012-12-02 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册