WMI:尝试检索SQL Server的“ServerNetworkProtocol”范围时“找不到文件”

时间:2013-03-19 13:38:11

标签: c# sql-server wmi

我正在尝试使用WMI获取服务器网络协议(SQL Server)。

我写了一个小应用程序:

---------------------------C# code--------------------------
ManagementScope scope = new ManagementScope(@"\\computerName\root\Microsoft\SqlServer\ComputerManagement");
scope.Options.Username = "Administrator";
scope.Options.Password = "Password";
scope.Connect();

var query = new ObjectQuery(@"SELECT * FROM ServerNetworkProtocol");
var searcher = new ManagementObjectSearcher(scope, query);
var managementObjectCollection = searcher.Get();
var result = managementObjectCollection.Cast<ManagementObject>().ToList(); //<---- FileNotFoundException
var s = result.First()["ProtocolName"].ToString();
MessageBox.Show(String.Format("Protocol name:  {0}", s));

当我运行应用程序时,我将收到System.IO.FileNotFoundException。 我使用WBEMTest Utility测试了查询,所有内容都是okey(使用管理员凭据)。 后来我编写了测试服务并输入了相同的代码,服务正常运行,没有任何例外。 我想问题与凭证有关。

任何人都可以解释更详细的错误。运行此查询需要哪些权限(如果凭据有问题)以及我如何解决问题。

我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

只需检查凭据和change一行:

 ManagementScope scope = new ManagementScope(@"\\computerName\root\Microsoft\SqlServer\ComputerManagement10");