使用C#fetch注册文件的时间(dll,exe,ocx)

时间:2018-04-05 11:21:40

标签: c# registry

我正在安装一个应用程序,安装后我执行的验证很少。其中一个是检查注册时间,另一个是检查预期文件列表是否已注册。

我有应该注册的文件列表,我已经编写了代码来验证。但不知怎的,我无法找到一种方法来获取注册文件的注册时间[日期和时间]。

下面是我为获取注册表文件的完整列表而编写的代码,然后在获取的文件上运行预期文件循环以检查它们是否存在。

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#来执行此操作。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我通过命令提示符运行RegDllView,并使用C#生成包含所有已注册文件的文件。其中所有已注册的文件列表都包含版本,日期等。

通过C#我将RegDllView.exe复制到我的服务器机器上。

然后从文件中获取所需的文件列表。 PFB工作代码:

@echo off
echo %PATHEXT%
pause