내 응용 프로그램을 시작할 때 사용자가 특정 버전의 소프트웨어가 설치되어 있는지 확인하려고합니다. 특히 MySQL 커넥터가 모두 C#을 사용하고 있는지 확인하려고합니다. 레지스트리에는 MySQL에 버전 항목이 들어 있습니다. 그래서 내가 성취하려고하는 것은 이것입니다.레지스트리 키의 값을 읽는 방법 C#
내 앱이 시작됩니다. 시작 코드의 어딘가에서 다음과 같은 일을 순서대로 수행해야합니다. 사용자가 커넥터가 설치되어있는 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Connector/Net
, 나는 그들이 어떤 버전을 확인하고 싶어서 ... 사용자가에 위치하고 설치된 MySQL의 커넥터를 가지고 있는지 확인하는 이름 = "버전"및 데이터 = xxx (아래 그림)로 저장됩니다.
사용자가 특정 버전을 설치 한 경우 다른 코드를 실행합니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
편집 : 아래는 제가 현재 가지고있는 코드와 내가 (그것은 주석) 라인 (19)에 오류를 얻고있다. 내 오류는 "
error CS1001: Identifier Expected
"나는 그게 무슨 뜻인지 알 수 없었습니다. 어떤 도움이 필요합니까?using System; using Microsoft.Win32; using System.Data; public class regTest { public static void Main() { try { RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\MySQL AB\\MySQL Connector\\Net"); if (key != null) { Object o = key.GetValue("Version"); if (o != null) { Version version = new Version(o as String); //"as" because it's REG_SZ...otherwise ToString() might be safe(r) Version broken = new Version("6.7.4"); if (version.Equals.(broken)) //This is where the error is occuring { DataSet dataSet = ConfigurationManager.GetSection("system.data") as ystem.Data.DataSet; DataView vi = dataSet.Tables[0].DefaultView; vi.Sort = "Name"; if (vi.Find("MySql") == -1) { dataSet.Tables[0].Rows.Add("MySql" , "MySql.Data.MySqlClient" , "MySql.Data.MySqlClient" , typeof(MySql.Data.MySqlClient.MySqlClientFactory).AssemblyQualifiedName); } } } } } catch (Exception ex) //just for demonstration...it's always best to handle specific exceptions { //react appropriately } } }
http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.getvalue.aspx – Marcus