csv ファイルからデータをインポートし、そのデータを SQLServerCE データベース テーブル (ローカル C ドライブ上) に配置する C# プログラムがあります。このプログラムは多くのユーザーのマシンで動作しますが、一部のユーザーはエラーが発生し続けます:
System.Data.OleDb.OleDbException (0x80004005): Invalid setting in Excel key of the Engines section of the Windows Registry. at
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at
System.Data.OleDb.OleDbConnection.Open()
C# コードは次のとおりです。
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathToFile + ";Extended Properties=Text;";
string sqlCmd = "SELECT * FROM [" + filenameOnly + "]";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
OleDbCommand cmd = new OleDbCommand(sqlCmd, conn);
using (OleDbDataAdapter dadapt = new OleDbDataAdapter(cmd))
{
conn.Open();
dadapt.TableMappings.Add("Table", dataSourceAlias);
dadapt.Fill(ds);
conn.Close();
}
}
私はすでにいくつかのことを試しました:
- 検証済みの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4\Engines\Text には、フォーマット キーの「CSVDelimited」があります
- ユーザーが Jet4.0 の最新リリース (Msjet40.dll バージョン 4.0.9511.0 Windows XP SP3 およびセキュリティ情報 MS08-028) を使用していることを確認しました。
- 検証済みの HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Text に 4 文字を超える拡張子がありません
しかし、この後も、「Windows レジストリのエンジン セクションの Excel キーの設定が無効です」という理由で、ユーザーは csv ファイルのデータをインポートできません。
助言がありますか?