我正在安装一个应用程序,安装后我执行的验证很少。其中一个是检查注册时间,另一个是检查预期文件列表是否已注册。
我有应该注册的文件列表,我已经编写了代码来验证。但不知怎的,我无法找到一种方法来获取注册文件的注册时间[日期和时间]。
下面是我为获取注册表文件的完整列表而编写的代码,然后在获取的文件上运行预期文件循环以检查它们是否存在。
static void Main(string[] args)
{
string keyPath = @"SOFTWARE\Classes";
//string keyPath = "InprocServer32";
RegistryKey topRegKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default).OpenSubKey(keyPath);
GetAllKeys(topRegKey);
int b = result.FindIndex(p => p.ToLower().Contains("MSCOMCT2.OCX".ToLower()));
}
public List<string> RegKeysList = new List<string>();
public static void GetAllKeys(RegistryKey regKey)
{
if (regKey != null)
{
foreach (string key in regKey.GetSubKeyNames())
{
GetAllKeys(regKey.OpenSubKey(key));
}
if (regKey.GetSubKeyNames().Length == 0)
{
try
{
result.Add(regKey.GetValue(string.Empty).ToString());
}
catch (Exception)
{
}
}
}
}
我能够找到一个C ++函数RegQueryInfoKey函数--ftLastWriteTime 执行它(没有在此探索更多)。但我想把它作为我的最后选择。
有没有办法使用C#来执行此操作。我错过了什么吗?
答案 0 :(得分:0)
我通过命令提示符运行RegDllView,并使用C#生成包含所有已注册文件的文件。其中所有已注册的文件列表都包含版本,日期等。
通过C#我将RegDllView.exe复制到我的服务器机器上。
然后从文件中获取所需的文件列表。 PFB工作代码:
@echo off
echo %PATHEXT%
pause