平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“读取注册表根据Office版本获取数据库连接字段”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
///
/// 读取注册表,根据Office版本获取数据库连接字段
///
///数据库连接字段
private string GetConnectionString()
{
string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ";
RegistryKey rk = Registry.LocalMachine;
//查询Office2003
RegistryKey f03 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Access\InstallRoot\");
//查询Office2007
RegistryKey f07 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Access\InstallRoot\");
//查询Office2010
RegistryKey f10 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Access\InstallRoot\");
if (f03 != null)
{
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ";
}
else if (f07 != null || f10 != null)
{
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = ";
}
return strConnectionString;
}

