70

アプリケーションの起動時に、ユーザーが特定のバージョンのソフトウェア、特に MySQL コネクタをインストールしているかどうかを確認しようとしています。すべて c# を使用しています。レジストリには、MySQL のバージョン エントリが含まれています。だから私が達成しようとしているのはこれです。

アプリが起動します。起動コードのどこかで、次のことを順番に行う必要があります。ユーザーが MySQL コネクタをインストールしているかどうかを確認します。このコネクタは次の場所にあります。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Connector/Net

ユーザーがコネクタをインストールしている場合、名前 = "バージョン" およびデータ = 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
        }
    }
}
4

3 に答える 3