ターミナルサービスで、サービスからログインユーザ権限のGUIアプリを起動する方法

[戻る]
マサシ 2010/08/08(日) 16:40:03
Windows2008などのターミナルサービス環境で動作するサービスアプリについて質問があ
ります。

アプリの構成は、主にファイル更新を監視するアップデーター(サービス(※S))とログイ
ンユーザ権限で
動作する常駐アプリ(タスクトレイ常駐のGUIアプリ(※C))になります。

やりたいことは、アップデーター(※S)が、※Cの更新があった場合、各ログインユーザ
が起動している
※Cを停止し、更新後に改めて※Cを各ログインユーザ権限で起動(ユーザのデスクトップ
上に表示)します。

わからないことは以下の2つです
1,ターミナルプロセス環境でもログインユーザ権限でGUIアプリの起動(ユーザのデスク
トップ上に)は技術的に可能か?
2,全体のイメージ的には、各ログイン中のユーザ トークンを取得して
CreateProcesAsUser()を使用して
  ※Cのモジュールを起動する方法で実装は可能か?

XPなどの通常のログインユーザでGUIアプリをサービスから起動させる方法は、
CreateProcessAsUser()を使用した以下の方法を参考にして実装は可能なようで、
現在ソースを見ながら勉強しています。
http://singleoyaji.seesaa.net/article/118410364.html

ITO 2010/08/09(月) 20:07:25
 アップデーター(※S)はうまくいったのですか?
タスクバーへの常駐ソフトとなると難しいです。
 ・サービスソフトとしてのレジストリー登録
 ・GUIソフトのタスクバー登録
 ・サービスソフトからGUIソフトを起動する。
 ・何か不具合があった場合はただちにサービスソフトとGUIソフトは
  共に異常終了する。
簡単に考えても4項目ありました。
まだまだありそうです。
「Windows2008などのターミナルサービス環境」ってWindows2008 Server
ですよね。
「Windows Server」ログインの管理がWindow 7/vistaと違う可能性が大きいです。
リンク先はWindowsvistaなので違う可能性がありますね。
 UAC回避はおいといてサービスプログラム+タスクバーへの常駐ソフトを重点に
考えてみたらどうでしょうか?

マサシ 2010/08/11(水) 09:50:46
返信ありがとうございました。
アップデーター(サービス(※S))と、常駐アプリ(ログインユーザで動作(※C))の機能実
装は完了しています。
知りたかったのは、サービスからログインユーザのディスクトップ(ログインユーザの権
限で)へGUIアプリ(※C)を起動させる方法です。

いろいろ調べてみたところ、実装が難しそうなので別途方法を考えています。
※Cの終了時に自分自身を起動させるためのモジュールを起動。※Sが※Cを更新後に先ほ
どのモジュールで※Cを起動させる方法が簡単そうなので、この方法で実装が可能か考え
ています。

ITO 2010/08/11(水) 20:08:04
 うーーん、常駐アプリとサービスプログラムの場合、レジストリー登録するので、
一度特権ユーザーでインストールすれば次回からはログインユーザーの問題はないと
思っていました。
 UACは別格なんですね。
解決策が見つかりそう見たいですが、インストール対象がサーバーOS見たいなので、
慎重に考えた方がいいですね。

古いスレッドには追加発言できません。