2015/08/19

ディスプレイ電源オフでウィンドウの配置やサイズが崩れる問題と、その回避方法

Windows7Home 省電力の設定でディスプレイの自動OFF後にマウスなどでディスプレイの電源ONになった際に開いていたいくつかのWindowが全て小さくなる - Microsoft コミュニティ

ディスプレイの電源を切って入れ直すとデスクトップの各ウィンドウサイズが変わる - Microsoft コミュニティ

 Windows 利用中にディスプレイの電源をオフにすると、何故かウィンドウの配置やサイズが崩れてしまう(画面左上方へ押し込められてしまう)現象。
 どうも画面解像度の変更処理(ないしはそれに類似した処理)が走ってしまっているようなのですが、この現象、自分も困ってるんですよね。

 翌日へ作業を持ち越すためにログオフしないでロックだけして帰る時、ディスプレイの電源をオフにできないのです。
 放置しておけば省電力モードへ移行するのですが、それまでの間に「マメな人」がディスプレイの電源を切ってくれたりするわけで、そんな時は翌朝悲惨なことになります。

 理屈で考えて「ディスプレイからの信号が無くなったからといって解像度を変える必要はなく、新たな信号がくるまで現状の解像度を維持すれば良いだけ」なのですから、この現象はディスプレイドライバの問題であると理解しています。
 しかし「仕様」と考えて(=諦めて)あまり深く突っ込んでいませんでしたが、そうか、VGA端子を使うという手もありましたか。

 試しに VGA端子で(わざわざ VGAケーブルを探して)接続して試してみると…おぉ、自分の環境では再現しません。
 この辺り、リンク先でも書いておられるように、VGA規格の旧さが奏功しているのでしょうね。

 ともあれ、これでメデタシメデタシ…なわけ無いだろ!
 CRTディスプレイが絶滅した今、何が悲しくて VGA なんぞ使わなくてはいけないのかと。

----------

 そこで、この問題を(とりあえず)回避する「手抜き Tips」を紹介します。
 要は、ディスプレイの電源をオフする際、予めディスプレイとログオン中ユーザとの "リンク" を切断しておけばよいのです。

 「ディスプレイとログオン中ユーザとの "リンク" を切断」と言ってもどうするか。
 ロック(Windowsキー + Lキー)だけでは不可です。前述のとおり再現してしまいます。ログオフすれば当然に切断できますが、それだと意味がありません(やれるならやってる)。

 現行のクライアント向け Windows(Windows Vista ~ 8.1、そして恐らく 10 も)であれば、「Ctrlキー + Altキー + Delキー」のメニューを表示して、「ユーザの切り替え」を選択(Altキー + Wキー)します。これで切断されます(正しくは「コンソール・セッションでなくなる」と表現すればいいのかな)。
 実際に別のユーザでログオンする必要はなく、この手順でログオン画面にするだけで可です。

 復帰する時は、普通にパスワードを入力すればログオンしていたユーザへ戻れます(普通にロックしていた時より、若干時間は要しますが)。
 仮にディスプレイの電源が切られていても、ウィンドウの配置やサイズは元のままです。

 これで「マメな人」にディスプレイ電源をオフにしてもらっても大丈夫です(…しかし、なんでここまでせにゃならんのだ…という気はする)。

 以上、「手抜き Tips」でした。
 まぁ「手抜き」とはいっても、「手を抜かず回避」(=解決)しようとすると、恐らくディスプレイドライバに対応してもらうしか無いんですけどね、この問題。

----------

Afterfollow 2016/10/03


 世の中、有徳の士というのはいらっしゃるもので、解決方法が公開されていました。

DisplayPort接続時のディスプレイのオンオフによるウィンドウの再配置について - 塵の雨日記

 以下のレジストリを変更すると、ディスプレイを切断してもウィンドウの配置やサイズが崩れないとのこと。
 物理ディスプレイ切断時に切り替わる仮想的なディスプレイがあって、その画面サイズがこのレジストリ値で指定できるのでしょう。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_(数字アルファベットの羅列)\00]
PrimSurfSize.cx = 横ピクセル数
PrimSurfSize.cy = 縦ピクセル数

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_(数字アルファベットの羅列)\00\00]
ActiveSize.cx = 横ピクセル数
ActiveSize.cy = 縦ピクセル数

 この現象、Windows 10 では発生しませんが、やはりまだまだ Windows 7 や 8 の方もいらっしゃることですし、Afterfollow として追記しておきます。

2015/08/18

Heartbleed 脆弱性への対応と、技術への理解

 セキュリティ関連企業のホワイトペーパを読んでいたら、Heartbleed 脆弱性への対応で SSL証明書を入替えた際、秘密鍵を変更しないまま証明書を再発行している Webサーバーが多いらしい。
 馬鹿な、有り得ないだろ。

 事実だとすれば、大きく二重の不見識だと思う。
 一つは、Heartbleed 脆弱性の内容(プロセスのメモリ内容が漏洩 = 秘密鍵が漏洩)を理解しないまま、「SSL証明書を再発行しないといけない」という上っ面だけの対応をしてしまっていること。
 もう一つは、そもそも SSL証明書を再発行(更新)する際は、新しい秘密鍵を使わなければいけないという大原則に反していること。

 セキュリティ関連企業のホワイトペーパーである(多少なりと宣伝の色彩がある)ことを割引いて読まないといけないのだろうけれど、自身の経験でも、何も考えずに長い有効期限(複数年)の証明書を選択したり、あまつさえ CSR を使い廻したりするのを見てきているので、あながち誇張だとばかりも思えない。
 どちらも、複数年にわたって「同じ秘密鍵を使い続ける」という事なので。特に後者(CSR の使い廻し)は、公開鍵基盤公開鍵暗号の仕組を理解していたら絶対にしない選択だと思う。

 「技術」というのは IT関連に限らず、詳細はともかく概要だけでも理解していないと安全に使うことすら叶わないのだと、改めて思うのです。