Windows2008などのターミナルサービス環境で動作するサービスアプリについて質問があ
ります。
アプリの構成は、主にファイル更新を監視するアップデーター(サービス(※S))とログイ
ンユーザ権限で
動作する常駐アプリ(タスクトレイ常駐のGUIアプリ(※C))になります。
やりたいことは、アップデーター(※S)が、※Cの更新があった場合、各ログインユーザ
が起動している
※Cを停止し、更新後に改めて※Cを各ログインユーザ権限で起動(ユーザのデスクトップ
上に表示)します。
わからないことは以下の2つです
1,ターミナルプロセス環境でもログインユーザ権限でGUIアプリの起動(ユーザのデスク
トップ上に)は技術的に可能か?
2,全体のイメージ的には、各ログイン中のユーザ トークンを取得して
CreateProcesAsUser()を使用して
※Cのモジュールを起動する方法で実装は可能か?
XPなどの通常のログインユーザでGUIアプリをサービスから起動させる方法は、
CreateProcessAsUser()を使用した以下の方法を参考にして実装は可能なようで、
現在ソースを見ながら勉強しています。
http://singleoyaji.seesaa.net/article/118410364.html
アップデーター(※S)はうまくいったのですか?
タスクバーへの常駐ソフトとなると難しいです。
・サービスソフトとしてのレジストリー登録
・GUIソフトのタスクバー登録
・サービスソフトからGUIソフトを起動する。
・何か不具合があった場合はただちにサービスソフトとGUIソフトは
共に異常終了する。
簡単に考えても4項目ありました。
まだまだありそうです。
「Windows2008などのターミナルサービス環境」ってWindows2008 Server
ですよね。
「Windows Server」ログインの管理がWindow 7/vistaと違う可能性が大きいです。
リンク先はWindowsvistaなので違う可能性がありますね。
UAC回避はおいといてサービスプログラム+タスクバーへの常駐ソフトを重点に
考えてみたらどうでしょうか?
返信ありがとうございました。
アップデーター(サービス(※S))と、常駐アプリ(ログインユーザで動作(※C))の機能実
装は完了しています。
知りたかったのは、サービスからログインユーザのディスクトップ(ログインユーザの権
限で)へGUIアプリ(※C)を起動させる方法です。
いろいろ調べてみたところ、実装が難しそうなので別途方法を考えています。
※Cの終了時に自分自身を起動させるためのモジュールを起動。※Sが※Cを更新後に先ほ
どのモジュールで※Cを起動させる方法が簡単そうなので、この方法で実装が可能か考え
ています。
うーーん、常駐アプリとサービスプログラムの場合、レジストリー登録するので、
一度特権ユーザーでインストールすれば次回からはログインユーザーの問題はないと
思っていました。
UACは別格なんですね。
解決策が見つかりそう見たいですが、インストール対象がサーバーOS見たいなので、
慎重に考えた方がいいですね。