RocketDockが背面に隠れて出てこない(Windows)

スポンサーリンク

RocketDockはWindowsで使えるドック風のランチャーで、「自動非表示」にしておくとモニタの端にマウスが来た時にニョキっと出てきます。

ただ、やや古いソフトのためか「常に手前に表示」にしていても最大化したウィンドウの後ろに隠れてしまい、マウスを端に持っていっても出てこない事がありました。

「互換モード」を「Windows XP(Service Pack 3)」にすることで解決しましたのでメモしておきます。
これまで1日に何度も隠れてしまっていたものが、3日経過しても全く出ないので正解だと思いますが、もしかすると環境にもよるかもしれませんので参考にしてください。

この方法の弊害と対策

RocketDock上から直接起動したソフトとエディタなど

互換モードを「XP SP3」にすることで隠れることなく安定して動作しますが、XP時代にはUACがなかった事もあり、互換モードでXPにするとRocketDockは管理者権限で実行されます。

これの何が問題かというと、「管理者権限で動いているソフト」から「標準ユーザーで動作しているソフト」へ渡せないことです。

FTPクライアントのFileZilla(RocketDock上から起動)と、テキストエディタのサクラエディタを例に確認してみます。

互換性でXPにしたRocketDockから起動したFileZillaは管理者権限で動作しており、試しにサーバ上にあるテキストファイルをダブルクリックしてみると関連付けされたエディタ(今回はサクラエディタ)で開こうとします。

すると「エディタ間の対話に失敗しました。権限レベルの異なるエディタが既に起動している可能性があります。」のエラーが出て開けません。

管理者権限で動作したFileZillaから、標準ユーザーで動作しているサクラエディタへ渡せないのです。

回避策:フォルダを経由する

RocketDock上へはフォルダを登録し、その中にショートカットを入れる方法です。

フォルダを経由することでソフトは標準ユーザーで起動されるようになり、「エディタ開い間の対話に失敗しました」のエラーは出ずに開けるようになります。

回避策:バッチファイルなどで実行ユーザーを指定する

runasコマンドで実行ユーザーを指定して実行させます。

以下の「ユーザー名」の部分は実際に使っているユーザー名を入れます。

runas /savecred /user:ユーザー名 "実行ファイルのパス"

例えばユーザー名が「Sakue」で、実行ファイルがFileZillaの場合は以下のようにします。

「bootFileFilla.bat」などの名称で保存し、それをRocketDockにドロップして登録します。

初回実行時にパスワード入力を求められますが、「/savecred」オプションにより資格情報に保存され、2回目以降はそのまま実行できます。

runas /savecred /user:Sakue "C:Program FilesFileZilla FTP Clientfilezilla.exe"

VBScriptの場合は以下のような感じです(ファイル名の例は bootFileFilla.vbs)

set objShell = createObject("WScript.Shell")
objShell.Run "runas /savecred /user:Sakue ""C:Program FilesFileZilla FTP Clientfilezilla.exe"""

あとはアイコンを好みのものにすれば完成です。

RocketDockへのドロップが効かない

これも管理者権限が原因ですが、RocketDockは「アイコンを固定する」のチェックを外せば、ドック上にプログラムやフォルダをドロップして登録できます。

しかし、管理者権限で起動したRocketDock上へはドロップしても無反応です。

この場合はドック上で右クリックして「アイテムの追加」をするか、RocketDockを終了し、「互換モードでこのプログラムを実行する」のチェックを一時的に外して起動することでドロップできるようになります。

互換モードでXP SP3にする

RocketDock.exeを右クリックし「プロパティ」から「互換性」タブを開きます。

「互換モードでこのプログラムを実行する」にチェックを入れ、「互換モード」を「Windows XP(Service Pack 3)」にします。

UACをスキップ(タスクスケジューラから起動)

ただし、Windows XPはUAC(以下の画像のダイアログ)導入前のOSのためか、互換モードでXPを指定すると以下のようにUACダイアログが出てしまい、スタートアップフォルダに入れても起動してくれません。

UACを無視して自動起動するよう、タスクスケジューラに登録します。

「PC」を右クリックして「管理」に入ります。
(全てのプログラム > Windows管理ツール > タスクスケジューラでもOKです)

「タスクスケジューラ ライブラリ」をクリックして展開します。

右ペインから「タスクの作成」をクリックします。

「全般」タブでは「最上位の権限で実行する」にチェックを入れます(入れないと起動できません)

「名前」はタスクスケジューラのリストに表示される名称で、今回は「UACスキップ – RocketDock」としました。
分かりやすい名前なら何でもOKです。

「トリガー」タブで「新規」をクリックします。

タスクの開始を「ログオン時」にして「OK」で閉じます。

「操作」タブでは実行するプログラムを指定します。

「参照」ボタンから「RocketDock.exe」を探して指定し、「OK」で閉じます。

これでタスクが追加できたので試しに実行してみます。

RocketDockが起動中の場合は終了させておきます。

タスクスケジューラに戻り、先程追加したタスクをクリック(UACスキップ – RocketDock)して選択状態にし、右ペインにある「実行」をクリックし、RocketDockが起動するのを確認したらOKです。

「最上位の権限で実行する」がOFFだと上記の実行ボタンを押しても起動しません。

あとはWindowsを再起動してみて自動でRocketDockが起動するか確認したらOKです。

追加したタスクを削除したい場合は、タスクの右クリックから「削除」を実行すると即座に削除されます。

コメント

タイトルとURLをコピーしました