C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: WindowsサービスでのプリンタIPアドレス取得について


(過去ログ 59 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■33606 / inTopicNo.1)  WindowsサービスでのプリンタIPアドレス取得について
  
□投稿者/ PW (1回)-(2009/03/05(Thu) 13:40:04)

分類:[.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等で調べても原因がつかめていない状況です。

どなたかご存知の方いらっしゃればご教授いただけますでしょうか?
宜しくお願いします。

引用返信 編集キー/
■33647 / inTopicNo.2)  Re[1]: WindowsサービスでのプリンタIPアドレス取得について
□投稿者/ Jitta on the way (281回)-(2009/03/05(Thu) 21:42:13)
No33606 (PW さん) に返信
> [分類]C# VS2008Ex
>
> こんにちは、いつもお世話になっています。
>
> プリンタに設定されているネットワーク上のIPアドレスを取得しようとWMIを使っています。
> exeで動作させると以下のソースでIPアドレスが取得できますが、
> Windowsサービスに乗せて動かすと、なぜか取得できません。

その実行ファイルを、他のアカウントでも参照出来る場所にコピーしてください。
新しく、アカウントを作成して下さい。
今作ったアカウントでログオンしてください。
“プリンタを追加せずに”、実行ファイルを実行してください。

おそらく、参照出来ないはずです。
理由は、今作ったアカウントに、プリンタがないので、プリンタを参照出来ないからです。

同じことが、サービスで発生します。

サービスのプロパティを見ると、解決策があるかも。
引用返信 編集キー/
■33656 / inTopicNo.3)  Re[1]: WindowsサービスでのプリンタIPアドレス取得について
□投稿者/ オショウ (104回)-(2009/03/06(Fri) 00:31:09)
> どなたかご存知の方いらっしゃればご教授いただけますでしょうか?
> 宜しくお願いします。

  この件と同様かと・・・

  http://bbs.wankuma.com/index.cgi?mode=al2&namber=4908&KLOG=14

以上。
引用返信 編集キー/
■33678 / inTopicNo.4)  Re[2]: WindowsサービスでのプリンタIPアドレス取得について
□投稿者/ PW (4回)-(2009/03/06(Fri) 16:43:42)

Jitta on the way さん、オショウさん ご回答ありがとうございます
> その実行ファイルを、他のアカウントでも参照出来る場所にコピーしてください。
> 新しく、アカウントを作成して下さい。
> 今作ったアカウントでログオンしてください。
> “プリンタを追加せずに”、実行ファイルを実行してください。
>
> おそらく、参照出来ないはずです。

確かにできませんでした。

> この件と同様かと・・・

権限に着目して今日いろいろと調べてたのですが・・・、
どうやらAdmin権限が絡んでいるみたいで、たとえ実行ファイルをたたいたとしても、
ログインユーザがAdmin権限がない場合、 ["HostAddress"]でIP取得できませんでしたが、
Admin権限をつけると、IPを取得できるようになりました。

サービスで取得できない件は、プロパティ等みてもよくわからず、
サービスを動作させるユーザを変えてみてもIP取得は出来ませんでした。

当方でさらに調査していく予定ですが、何かありましたら再度ご教授いただければと思います。


引用返信 編集キー/
■33694 / inTopicNo.5)  Re[3]: WindowsサービスでのプリンタIPアドレス取得について
□投稿者/ 魔界の仮面弁士 (1013回)-(2009/03/07(Sat) 12:04:39)
No33678 (PW さん) に返信
> サービスで取得できない件は、プロパティ等みてもよくわからず、
> サービスを動作させるユーザを変えてみてもIP取得は出来ませんでした。

サービスの実行アカウントは、どのようになっていますでしょうか。
また、そのアカウントに対するプリンタ設定は、どのようになっていますか?
http://technet.microsoft.com/ja-jp/library/cc170958.aspx

たとえば IIS のサービスは通常、system ユーザーとして実行されることになるため
http://support.microsoft.com/kb/419321/ja
などとして、プリンタの割り当てが求められることになります。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -