我想使用c#列出所有用户数据源但我不能这样做,因为我没有权限读取注册表项。如何获取所有用户数据源?
我尝试了以下代码,但没有使用
private List<string> ENUMDSN()
{
List<string> list = new List<string>();
list.AddRange(ENUMDSN(Registry.CurrentUser));
list.AddRange(ENUMDSN(Registry.LocalMachine));
XElement xmlele = new XElement("list", list.Select(i => new XElement("list", i)));
return list;
}
private IEnumerable<string> ENUMDSN(RegistryKey rootkey)
{
RegistryKey regkey = rootkey.OpenSubKey(@"Software\ODBC\ODBC.INI\ODBC Data Sources");
foreach (string name in regkey.GetValueNames())
{
string value = regkey.GetValue(name, "").ToString();
yield return name;
}
}
答案 0 :(得分:-1)
“CurrentUser”注册表项不需要任何特定的权限即可读/写而没有任何问题,但如果您想读取“LocalMachine”子项中必须具有管理员权限的键,则没有其他方法
修改强> 如果在IIS下运行代码,则无法获取“CurrentUser”或“LocalMachine”下的键值,因为IIS应用程序池不会在“当前帐户”下运行,而是在“用户帐户”下运行。
对于解决方案,您可以更改应用程序池的用户帐户,但出于某些安全原因不建议这样做。