分類:[.NET 全般]
[分類]C# VS2008Ex
こんにちは、いつもお世話になっています。
プリンタに設定されているネットワーク上のIPアドレスを取得しようとWMIを使っています。
exeで動作させると以下のソースでIPアドレスが取得できますが、
Windowsサービスに乗せて動かすと、なぜか取得できません。
using System.Management;
public void GetIp()
{
string printerPortName;
string printerIP;
string query = "SELECT * FROM Win32_Printer";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject mo in queryCollection)
{
//ポート名取得
printerPortName = mo["PortName"].ToString();
query = "SELECT * FROM Win32_TCPIPPrinterPort WHERE Name = '" + printerPortName + "'";
ManagementObjectSearcher searcherIp = new ManagementObjectSearcher(query);
ManagementObjectCollection queryCollectionIp = searcherIp.Get();
foreach (ManagementObject moIp in queryCollectionIp)
{
//IPアドレス取得
printerIP = moIp["HostAddress"]
}
}
}
以上のようにWin32_Printerでポート名を取得後、Win32_TCPIPPrinterPortから"HostAddress"を
取得しようとしていますが、NULLのようです。
他のプロパティは moIp["Name"](ポート名)のみ取得できました。
なのでSQLが間違っているとか、WMIが起動できていないとかではなさそうです。
Windowsサービスの仕様でできないようになっているとかってあるんでしょうか。。。
はたまた別の原因が・・・。
MSDN等で調べても原因がつかめていない状況です。
どなたかご存知の方いらっしゃればご教授いただけますでしょうか?
宜しくお願いします。
|