我正在尝试使用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(使用管理员凭据)。 后来我编写了测试服务并输入了相同的代码,服务正常运行,没有任何例外。 我想问题与凭证有关。
任何人都可以解释更详细的错误。运行此查询需要哪些权限(如果凭据有问题)以及我如何解决问题。
我将不胜感激任何帮助。
答案 0 :(得分:0)
只需检查凭据和change一行:
ManagementScope scope = new ManagementScope(@"\\computerName\root\Microsoft\SqlServer\ComputerManagement10");