2012-01-28 4 views

ответ

6

Быстрый поиск Google появился следующий код из this page:

strComputer = "." 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

Set colItems = objWMIService.ExecQuery _ 
    ("Select * From Win32_Product Where Name = 'QuickTime'") 

If colItems.Count = 0 Then 
    Wscript.Echo "QuickTime is not installed on this computer." 
Else 
    For Each objItem in colItems 
     Wscript.Echo "QuickTime version: " & objItem.Version 
    Next 
End If 

"Но подождите!" вы говорите: «Это VBScript, а не C#!» Это правда, но это VBScript, который выполняет запросы WMI. Еще один быстрый поиск в Google появляется how to do WMI queries from C#.

+0

Clever, на самом деле. Даже если вы не знаете VBScript, он по-прежнему является достойным псевдокодом для версии C#. –

+0

спасибо, я посмотрю, смогу ли я заставить это работать. – Zarxrax

2

Попробуйте это:

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")) 
{ 
    if (key != null) 
    { 
     foreach (string subKeyName in key.GetSubKeyNames()) 
     { 
      using (RegistryKey subKey = key.OpenSubKey(subKeyName)) 
      { 
       if (subKey == null) continue; 

       var displayName = subKey.GetValue("DisplayName") as string; 

       if (displayName == null || !displayName.Equals("QuickTime")) continue; 

       var version = subKey.GetValue("DisplayVersion"); 

       Console.WriteLine(displayName); 
       Console.WriteLine(version); 
      } 
     } 
    } 
} 
Смежные вопросы