mursのColdFusionメモ

頭の中から抜け落ちていく情報をメモがわりに書き溜めていくブログです。

ColdFusion BuilderのCFサーバーからサービスで動いているColdFusionを停止・起動する

ColdFusion Builderでは、ColdFusionサーバーを登録するんだけど、登録したColdFusionの停止・起動や再起動が出来るようになっている。

ただ、これまでこの機能がまともに動いたことが無くって使ってもいなかった。

VS CodeベースのColdFusion Builderの登録済み「CFサーバー」の操作

EclipseベースのColdFusion Builderの登録済み「ColdFusionサーバー」の操作

自分のPC(Windows 10)では普段からColdFusionを使っていることもあって、ColdFusion 2021や2018を OSのサービスで起動・停止をしている。 (というか、デフォルトで2つのバージョンを起動している)

ColdFusion BuilderでColdFusionサーバーを登録するときに、ローカルのサーバーの場合は「Windowsのサービスを使用してサーバーを起動または停止します。」というチェックボックスがあって、これにチェックを入れたらColdFusionサーバーをサービスで起動・停止できるようになるはず。。。なんだけど、これが動かない。

VS CodeベースのColdFusion Builder

EclipseベースのColdFusion Builderの

[停止]を行うと、内部でシャットダウンコマンドを受け取ってColdFusionを停止するんだけど、停止したままにならずにすぐに開始されてしまう。 これは、ColdFusionをサービスで起動するとcoldfusion.exeとcoldfusionsvc.exeの2つが起動して、コマンドによってcoldfusion.exeが停止されても、coldfusionsvc.exeが停止を検知して、すぐに起動するようになっているから。

また、停止中のColdFusionを起動することもできない。「Windowsのサービスを使用してサーバーを起動または停止します。」を無効にしたらColdFusionを起動するkとはできるんだけど、この場合は、コマンド機能(cfstart.bat)から起動したのと同じになるので、プロセスがjava.exeで起動してログインユーザーで実行されてしまう。

ということで、ColdFusion Builderからの起動はあきらめて、OSのサービス一覧から起動・停止をしていたんだけど、別件の調査をしていたときに、たまたまこの記事がヒットして、あれ?これってColdFusion Builderから起動するときにも該当するんじゃない?って思って試してみたらビンゴだった。 taeisheauton4programming.blogspot.com

コマンドプロンプトを管理者権限で開いて

上記の記事の内容にそって、whoami /user でログインしているユーザーのSIDを取得して

sc sdshow "ColdFusion 2018 Application Server" sc sdshow "ColdFusion 2021 Application Server" で、現在のアクセス許可の設定を表示(D:(A;;~)して、その内容をコピーする。

で、D:(A;;~)(A;;~)(A;;~)(A;;~)... の箇所に自分のSIDで起動・停止が出来る権限を追加して →D:(A;;RPWP;;;SID)(A;;~)(A;;~)(A;;~)(A;;~)... 

それを sc sdset "ColdFusion 2018 Application Server" D:(A;;RPWP;;;SID)(A;;~)(A;;~)(A;;~)(A;;~)... や sc sdset "ColdFusion 2021 Application Server" D:(A;;RPWP;;;SID)(A;;~)(A;;~)(A;;~)(A;;~)... としてセットすれば良いと。

実行結果:[SC] SetServiceObjectSecurity SUCCESS ※コマンドプロンプトを管理者権限で開かないと、「アクセスが拒否されました」エラーになる。

権限のRPWPとか何?って思ったけど、検索したらそれを解説しているページがあってなんとなくわかった(気がする) stakiran.hatenablog.com

これで、ColdFusion Builder 上でColdFusion 2021 や 2018をサービス起動・停止が出来るようになった。 まだまだ分からないことがいっぱい。忘れずにメモしておこう。

(追記) EclipseベースのColdFusion Builder 2018で、ColdFusion 2021のサービス停止・起動はできなかった。 VS CodeベースのColdFusion BuilderではColdFusion 2021をサービス停止・起動ができるので、Eclipseベースの制限になるのかな。 ちょっと分かんないや。これもメモだけしておこう。