获取日期计算机首次使用

时间:2017-09-29 21:35:28

标签: c# winforms

我想知道多少天前首次使用商店购买的HP或戴尔Windows 10 PC,使用c#/ windows表格。我的意思是计算机完成初始设置的日期,例如创建用户名和密码等。

从HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate获取安装日期将不起作用,因为功能更新会更改该日期。

我希望首次设置/使用PC时会创建一个文件夹或文件,即使使用创建者更新,周年纪念更新等功能更新也不会更改

是否知道这样的文件夹或文件,或通过C#获取此类信息的其他方式?

编辑:这些建议的文件夹/文件创建日期会丢失,我正在使用的虚拟机上的创建者更新或者安装时更早。 C:\ WINDOWS \ SYSTEM.INI C:\ WINDOWS \ WIN.INI C:\ Users \用户的用户 C:\ bootmgr的 C:\ bootnxt C:\ $ RECYCLE.BIN

编辑:这不是建议的副本的重复,因为我需要知道原始安装日期,即使发生了像创建者更新这样的功能更新。有一个类似的帖子,但没有一个答案对我有用。

2 个答案:

答案 0 :(得分:3)

systeminfo|find /i "original" 

enter image description here

您可以在C#中使用此代码

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C systeminfo.exe|find /i \"original\" ";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

或者您可以通过更简单的方式检查用户目录的创建日期

var date = Directory.GetCreationTime(@"C:\users");

您可以创建应用并从此命令中读取结果:)

答案 1 :(得分:1)

<强>更新 我修改了循环遍历所有特殊文件夹的答案,因为我发现了一些比最旧的用户文件夹更旧的文件

这完全没有保证,希望有人可以告诉我它是否错了我会删除它,但一个想法是获取SpecialFolder对象的最早创建日期:

static void Main()
{
    // This will hold the oldest date, so start it at MaxValue
    var oldestDate = DateTime.MaxValue;

    // Loop through each defined special folder
    foreach (Environment.SpecialFolder specialFolder in 
        Enum.GetValues(typeof(Environment.SpecialFolder)))
    {
        // Get the path to this folder
        var folderPath = Environment.GetFolderPath(specialFolder);

        // Some special folders may not exist, so verify the path first
        if (Directory.Exists(folderPath))
        {
            // If the created date of this folder is older, update our variable
            var createDate = Directory.GetCreationTime(folderPath);
            if (createDate < oldestDate) oldestDate = createDate;
        }
    }

    Console.WriteLine($"The oldest speical folder was created on: {oldestDate}");

    Console.Write("\nDone!\nPress any key to exit...");
    Console.ReadKey();
}

更新2

创建Windows根目录也会提供最早的时间(至少对我而言)。这可能更简单吗?

var createDate = Directory.GetCreationTime(Path.GetPathRoot(
    Environment.GetFolderPath(Environment.SpecialFolder.Windows)));