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 ユーティリティを使用してクエリをテストしたところ、すべて問題ありませんでした (管理者の資格情報を使用)。後でテスト サービスを作成し、同じコードを配置したところ、サービスは例外なく正しく動作しました。問題は資格情報に関連していると思います。

誰が何が間違っているかをより詳細に説明できますか。このクエリを実行するために必要なアクセス許可 (資格情報に問題がある場合) と、問題を解決する方法。

助けていただければ幸いです。

4

1 に答える 1

0

資格情報を確認して、1 行を変更するだけです。

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