2012-10-24 19 views
0

我試圖檢索各種安裝的應用程序的版本號,然後執行一個操作,如果它們低於某個值。例如:使用安裝的版本號作爲變量

Dim regKey As RegistryKey 
     Dim ver As ??????? 
     regKey = Registry.LocalMachine.OpenSubKey("Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player ActiveX") 
     ver = regKey.GetValue("DisplayVersion") 
       MessageBox.Show(ver) 
      If ver < 11.4.402.287 Then 
      'Install updated version of software in question 
     End If 
     regKey.Close() 

我如何定義Ver能夠輕鬆地做出更大/更小的檢查?我已經試過:

Dim ver as integer 
Dim ver as decimal 

這兩個回報「的其他信息:從字符串轉換‘的11.4.402.287’鍵入‘十進制’是無效的。」

+0

您可能需要將字符串解析爲主要/次要/構建部分和m根據你的決心做出決定(很可能只有前兩個數字 - 主要和次要版本)都會引起興趣。在上面的例子中,11是主要版本號,4是次要版本。) – Tim

回答

1

簡單的分析和檢驗假設你正在看前兩個部分:

Dim va = Ver.split("."c) 
If va(0) < 11 OrElse (va(0) = 11) and va(1) < 4) Then 
    'Install updated .... 
End If 
+0

這看起來確實是最簡單的方法。 :) – JDB

+0

這絕對完成了工作。謝謝。 – KevinD

0

用於這個表達式可能看起來像:

(?<major>\d+)(\.(?<minor>\d+)(\.(?<revision>\d+)(\.(?<build>\d+))?)?)? 

然後,您可以提取使用組的版本號:

Dim l_version As Regex = New Regex("(?<major>\d+)(\.(?<minor>\d+)(\.(?<revision>\d+)(\.(?<build>\d+))?)?)?") 
Dim l_versionMatch As Match = l_version.Match("1.2.3") 

Dim l_major As String = l_versionMatch.Groups("major").Value