C# Check the version of Microsoft Office you are using on your computer

Hi mọi người, lại là mình đây hôm nay mình chia sẽ cho những anh coder còn non trẻ như mình biết cách hiển thị thông tin chương trình "MICROSOFT OFFICE" mọi người cùng biết nhé.


Đầu tiên, các bạn tạo cho mình một class Office.cs với nội dung như sau:
public class Office
{

    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]

    static extern uint RegOpenKeyEx(UIntPtr hKey, string lpSubKey, uint ulOptions, int samDesired, out int phkResult);
    [DllImport("Advapi32.dll")]
    static extern uint RegCloseKey(int hKey);
    [DllImport("advapi32.dll", EntryPoint = "RegQueryValueEx")]
    static extern int RegQueryValueEx(int hKey, string lpValueName, int lpReserved, ref uint lpType,
        System.Text.StringBuilder lpData, ref uint lpcbData);
    private static UIntPtr HKEY_LOCAL_MACHINE = new UIntPtr(0x80000002u);
    private static UIntPtr HKEY_CURRENT_USER = new UIntPtr(0x80000001u);

    private Dictionary<string, string> LatestVersions = new Dictionary<string, string>();

    public Office()
    {
        LatestVersions.Add("12.0", "Office2007");
        LatestVersions.Add("14.0", "Office2010");
        LatestVersions.Add("15.0", "Office2013");
        LatestVersions.Add("16.0", "Office2017 and higher ");
    }

    private string GetVersionNumberFromRegistry()
    {
        string regVersion;

        regVersion = GetVersionNumberFromRegistry("SOFTWARE\\Microsoft\\Office\\");
        if (regVersion == null)
            regVersion = GetVersionNumberFromRegistry("SOFTWARE\\Wow6432Node\\Microsoft\\Office\\");

        return regVersion;
    }
    private string GetVersionNumberFromRegistry(string key)
    {
        string version = null;
        foreach (string VerNo in LatestVersions.Keys)
        {
            string offPath = Reg64(HKEY_LOCAL_MACHINE, key + VerNo + "\\Excel\\InstallRoot", "Path");
            if (offPath != null)
            {
                version = VerNo;
                break;
            }
        }
        return version;
    }
    public string GetVersion()
    {
        string versionFromReg = GetVersionNumberFromRegistry();
        string versionInstalled = LatestVersions[versionFromReg];

        bool? Office64BitFromReg = Off64Bit("SOFTWARE\\Microsoft\\Office\\", versionFromReg);

        if (Office64BitFromReg == null)
            Office64BitFromReg = Off64Bit("SOFTWARE\\Wow6432Node\\Microsoft\\Office\\", versionFromReg);
        if (Office64BitFromReg.HasValue && Office64BitFromReg.Value)
            versionInstalled += " (64 bit)";
        else if (Office64BitFromReg.HasValue && !Office64BitFromReg.Value)
            versionInstalled += " (32 bit)";
        else
        {
            versionInstalled += " (Unknown bit)";
        }

        return versionInstalled;
    }

    private bool? Off64Bit(string key, string version)
    {
        bool? Office64BitFromReg = null;
        string Bitness = Reg64(HKEY_LOCAL_MACHINE, key + version + "\\Outlook", "Bitness");
        if (Bitness == "x86")
            Office64BitFromReg = false;
        else if ((Bitness == "x64"))
            Office64BitFromReg = true;
        return Office64BitFromReg;
    }

    private string Reg64(UIntPtr parent, string key, string prop)
    {
        int ikey = 0;
        int bit36_64 = 0x0100;
        int query = 0x0001;
        try
        {
            uint res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, query | bit36_64, out ikey);
            if (0 != res) return null;
            uint type = 0;
            uint data = 1024;
            StringBuilder buffer = new StringBuilder(1024);
            RegQueryValueEx(ikey, prop, 0, ref type, buffer, ref data);
            string ver = buffer.ToString();
            return ver;
        }
        finally
        {
            if (0 != ikey) RegCloseKey(ikey);
        }
    }

}

Sau khi các bạn đã tạo được một class office.cs rồi thì các bạn tiếp tục với đoạn mã bên dưới để lấy thông tin MICROSOFT OFFICE nhé.
private void Form1_Load(object sender, EventArgs e)
{
    string RunningOfficeVersion = new Office().GetVersion();
    MessageBox.Show("Running Office Number: " + RunningOfficeVersion);
}

Chúc các bạn thành công với thủ thuật đơn giản này.
Theo : LapTrinhVB.Net
Next Post Previous Post
8 Comments
  • ADM HUNGQB ™
    ADM HUNGQB ™ Thứ Bảy, 06 tháng 8, 2022

    (y) mọi ng áp dụng nhé!

  • Anonymous Hz
    Anonymous Hz Thứ Năm, 11 tháng 8, 2022

    nice (y) cũng hay nhưng chưa áp dụng nên không biết thế nào :D

  • Lai Joker
    Lai Joker Thứ Bảy, 13 tháng 8, 2022

    cũng ok đó, nhưng k cần lắm, chủ yếu là trình duyệt web của bạn đang sữ dụng có tích hợp nhiều thứ bổ trợ cho công việc của m` hay không thôi :))

    • ADM HUNGQB ™
      ADM HUNGQB ™ Thứ Sáu, 02 tháng 9, 2022

      Haha, việc đó quá đơn giản với a Lai Joker, còn việc hack phần mền nhảy cảm của phụ nữ lại là chuyện khó phải k a :v

  • Unknown
    Unknown Thứ Sáu, 19 tháng 8, 2022

    vào phần thông tin kiểm tra từ từ cũng đc k cần dùng đến mấy cái này cho mất công tải về nặng win :))

  • ADM HUNGQB ™
    ADM HUNGQB ™ Thứ Sáu, 19 tháng 8, 2022

    Dạ, nhưng ở đây e chủ yếu là tập tành code để áp dụng thôi a, chứ việc kt đó thì lên xem thông tin ghi chú là ra hết a. Và m` có thể tích hợp kiểm tra nhiều thứ trên windows để tích hợp vào 1 chương trình luôn đó a

  • Hoàng Đông
    Hoàng Đông Thứ Sáu, 19 tháng 8, 2022

    đúng r` e, nên tích hợp nhiều thứ vào 1 ứng dụng để làm một ứng dụng chuẩn cho windows luôn e.

  • ADM HUNGQB ™
    ADM HUNGQB ™ Thứ Sáu, 19 tháng 8, 2022

    @Hoàng Đông (y)

Add Comment
comment url
Tăng traffic miễn phí