方法一:(速度慢)
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
string productcode;
foreach (ManagementObject wmi in searcher.Get())
{
if (wmi.GetPropertyValue("Name").ToString() == "yourapplicationname")
{
productcode = wmi.Properties["ProductID"].Value.ToString();
break;
}
}
http://social.msdn.microsoft.com/Forums/zh-CN/winforms/thread/02397dc0-2653-4afe-9539-9356befa6147
方法二:
Type type = Type.GetType("WindowsInstaller.Installer") ?? //这个取不到type不知道咋回事
Type.GetTypeFromProgID("WindowsInstaller.Installer");
WindowsInstaller.Installer installer = (WindowsInstaller.Installer)
Activator.CreateInstance(type);
string productCode = string.Empty;
foreach (string code in installer.Products)
{
string productName = installer.get_ProductInfo(code, "InstalledProductName");
if (productName == "YourPruductName")
{
productCode = code;
break;
}
}
http://www.pcreview.co.uk/forums/obtain-product-code-within-c-application-t3631582.html