0

我正在尝试使用 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 测试了查询,一切正常(使用管理员凭据)。后来我写了测试服务并放了相同的代码,服务正常工作,没有任何异常。我想这个问题与凭据有关。

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

我将不胜感激任何帮助。

4

1 回答 1

0

只需检查凭据并更改一行:

 ManagementScope scope = new ManagementScope(@"\\computerName\root\Microsoft\SqlServer\ComputerManagement10");
于 2013-03-19T15:12:35.697 回答