我想知道多少天前首次使用商店购买的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
编辑:这不是建议的副本的重复,因为我需要知道原始安装日期,即使发生了像创建者更新这样的功能更新。有一个类似的帖子,但没有一个答案对我有用。
答案 0 :(得分:3)
systeminfo|find /i "original"
您可以在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)));