我正在尝试使用 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 测试了查询,一切正常(使用管理员凭据)。后来我写了测试服务并放了相同的代码,服务正常工作,没有任何异常。我想这个问题与凭据有关。
任何人都可以更详细地解释什么是错的。运行此查询需要哪些权限(如果凭据有问题)以及如何解决该问题。
我将不胜感激任何帮助。