スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WindowsのサービスからはGUIが使えない

最近知ったのですが、Windows Vista以降からは、ユーザのセッションとサービスを起動しているセッションが異なるようです。
サービスが実行されているセッションを「セッション 0 」と呼び、それ以外はユーザのセッションとして、ユーザセッションのアプリからは、サービスにはアクセス出来なくなっています。

セッション 0 の分離

これの影響でサービスとして実行しているアプリケーションからGUIを利用(ウィンドウの起動とか)を実行した場合に、その結果をユーザの画面で受け取ることが出来なくなりました。
(ウィンドウを起動しているのがサービスのセッションで、ユーザのセッションとは異なるので、ウィンドウが表示されないという結果)

ちなみに何故このような事に気が付いたかというと、JenkinsでSeleniumを自動実行させた場合にSeleniumのWebDriver、すなわちウィンドウが表示されないという事象が発生し、調査したいたところ今回の仕様を知ることになりました。
Jenkinsがサービスとして起動していた為、WebDriverのウィンドウが表示されなかったようです。
(しかし、テストは無事に実行されていました(画面のキャプチャも可)。サービスのセッションで問題なく動作していた模様)
JenkinsをサービスとしてではなくWebアプリ(war)でインストールしてジョブを実行するとWebDriverのウィンドウを表示する事が出来ました。

サービスのままでも問題はなさそうなのですが、画面のプロパティへのアクセス等が不可になっているとの仕様もある為、私は念のため、JenkinsをWebアプリで実行するようにしました。

後、少し頑張ればサービスからもGUIが起動出来るみたいです。その方法は以下の記事にあるようです。
(私は特に試していません)

How to start a GUI process from service, under Windows Vista/7

以上
スポンサーサイト
プロフィール

まこち

Author:まこち
スマートフォンのアプリ開発やWebサイト構築等を仕事や趣味でやっています。
最近はグラフデータベースも始めました。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。