[.NET]依ProgID到Registry取得檔案的版本號

[.NET]依ProgID到Registry取得檔案的版本號

有人問如何Check Office MODI的版本,不是直接用檔案總管看一下就好了嗎?

但是如果透過程式來告訴我們呢? 那就要寫程式了~~~

我的方式是透過Registry來找到該檔案路徑,再讀取該檔案的屬性,就知道了!

1.先到HKEY_CLASSES_ROOT\依ProgID找到它的CLSID

2.再到HKEY_CLASSES_ROOT\CLSID依剛才找到的CLSID中InprocServer32資料夾的值就是該COM檔案的所在路徑。

所以,只要有ProgID的話,就可以這樣做哦! 程式如下,

private int GetFileVersionByProgID(string progID)
{
    int result = -1;
    RegistryKey progRegKey = Registry.ClassesRoot.OpenSubKey(progID);
    if (progRegKey != null)
    {
        //1.先到HKEY_CLASSES_ROOT\依ProgID找到它的CLSID
        RegistryKey clsidKey = progRegKey.OpenSubKey("CLSID");
        string comClsidKey = clsidKey.GetValue("") as string;
        if (!string.IsNullOrEmpty(comClsidKey))
        {
            //2.再到HKEY_CLASSES_ROOT\CLSID依剛才找到的CLSID中InprocServer32資料夾的值就是該COM檔案的所在路徑。
            RegistryKey rootCLSID = Registry.ClassesRoot.OpenSubKey("CLSID");
            RegistryKey findByCLSID = rootCLSID.OpenSubKey(comClsidKey);
            RegistryKey inprocServer32Key = findByCLSID.OpenSubKey("InprocServer32");
            string installPath = inprocServer32Key.GetValue("") as string;
            System.Diagnostics.FileVersionInfo fileVersInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(installPath);
            //check file path
            result = fileVersInfo.FileMajorPart;
        }
    }
    return result;
}

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^