3

我想知道上次访问该软件是什么时候?我尝试使用LastUseWin32_SoftwareFeature 的属性。但它返回奇怪的值(不是日期)。这是我使用的代码:

            string temp;
            string date;

            ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_SoftwareFeature");
            foreach (ManagementObject mo in mos.Get())
            {
                if (mo["Name"] != null)
                {
                    temp = mo["Name"].ToString() +" Version " +mo["Version"].ToString();
                    lstTest.Items.Add(temp);


                    date = mo["LastUse"].ToString();
                }
                else
                {
                    break;
                }
            }
4

2 回答 2

2

您可以使用 System.Management.ManagementDateTimeConverter 解析日期时间。但是,如果日期时间是 19800000*,即使这样也会中断。因此,解析日期时间的代码将是。

        string dateString = mo.Properties["LastUse"].Value.ToString();

        if (dateString.Substring(4, 2) == "00" || dateString.Substring(6, 2) == "00")
        {
            d = DateTime.ParseExact("19800101", "yyyyMMdd", null);
        }
        else
        {
            d = ManagementDateTimeConverter.ToDateTime(dateString);
        }
于 2013-06-01T11:43:31.270 回答
1

WMI 中的日期和时间以 DMTF 日期时间格式表示,因此要转换为 .Net DateTime,您必须使用ManagementDateTimeConverter.ToDateTime方法。

于 2013-05-02T16:55:18.593 回答