none
Windowsサービスでデスクトップとの対話と、ネットワーク資源の利用の両方を行いたい RRS feed

  • 質問

  • お世話になります。

    VC++にて作成したGUIを持つプログラムを

    サービスの実行をデスクトップの対話にチェックを入れて

    ローカルシステムアカウントで実行したところ、

    WNetAddConnection3の処理で戻り値1312が返ってきました。

     

    そこでネットワークリソースにアクセスできるユーザー権限を持つアカウントを作成し、

    それで実行するように変更したところ、

    次はデスクトップとの対話を行えなくなってしまい、

    画面表示ができなくなってしまいました。

     

    この二つを同時に行う事は不可能なのでしょうか?

    2008年2月21日 6:51

回答

  • デスクトップとの対話が必要ということは、
    ログオンしているユーザの代行として何かを行うサービスでしょうか。
    それならば、LocalSystem アカウントでサービスを動作させ、
    ImpersonateLoggedOnUser 等でユーザを偽装すれば、
    偽装中はそのユーザのセキュリティトークンでネットワークにアクセスできると思いますよ。
    2008年2月22日 14:35

すべての返信

  • デスクトップとの対話が必要ということは、
    ログオンしているユーザの代行として何かを行うサービスでしょうか。
    それならば、LocalSystem アカウントでサービスを動作させ、
    ImpersonateLoggedOnUser 等でユーザを偽装すれば、
    偽装中はそのユーザのセキュリティトークンでネットワークにアクセスできると思いますよ。
    2008年2月22日 14:35
  • LogonUserにてトークンを取得し、ImpersonateLoggedOnUserを行ったところ

    LocalSystem アカウントで実行した場合でも

    WNetAddConnectionの処理でエラーコードが返ってこなくなりました。

     

    回答有難う御座いました。

    2008年2月25日 1:03
  • Vista で動かないんですけどいいんですかね?

    Service application と desktop application に分離すべきだと思いますけど。
    2008年3月1日 9:48