PCのデスクトップは散らかっている方が使いやすい?:山市良のうぃんどうず日記(79)
Windows 10の更新プログラム適用後にPCを再起動すると、作業中のデスクトップ状態が失われることに、何とかならないかと思っている人はいませんか。IEとエクスプローラーで開いているウィンドウなら、何とかなるかもしれません。
机の上も、PCのデスクトップも、散らかっている方が仕事がしやすい!
オフィスの机の上が常に整理整頓されているのを好む人もいれば、人が見ると散らかっているだけのように見える乱雑な状態を好む人もいます。筆者は後者です。自分だけが把握している微妙な配置を、掃除でずらされるとカチンときます。筆者は、机の上だけでなく、PCのデスクトップも散らかった状態の方が仕事が進みます(写真1)。
「デスクトップが散らかっている」とは、今の仕事や次の仕事に使うフォルダ、共通の素材を入れてあるフォルダ、あるいは頻繁にチェックしたいWebサイトなどを、Windowsの「エクスプローラー」やWebブラウザで開いておき、デスクトップの好みの場所に置いておく、あるいは最小化しておく状態のことです。
筆者は日常的に、仕事が終わったら休止状態を使ってPCの電源を切り、翌日、PCを起動したら前日の状態から作業を再開するようにしています。そのような日常も、「Windows Update」による更新プログラムのインストールに伴う再起動でリセットされてしまいます。再起動後にクリーンなデスクトップを「仕事用に散らかしていく」という作業が手間なのです。
「Internet Explorer(IE)」やその他の主要なWebブラウザは、強制終了された場合に「次回起動時にタブを復元する」機能を備えています。しかし、これが期待通りに復元してくれない場合があります。例えば、PCの再起動前にIEの「×」ボタンをクリックして、IEを正常終了してしまったときなどです。
Windowsにもほしい! Macの「再ログオン時にウィンドウを再度開く」機能
以前、Macを触る機会があったのですが、Mac(OS X 10.7 Lion以降)では、システム終了時に「再ログオン時にウィンドウを再度開く」という機能が使えます(画面1)。この機能を見たとき、Windowsにもあったらいいのにと思いました。
ないならば、作ってしまえ、スクリプト
ないものは、作ってしまいましょう。とはいえ、筆者はアプリケーション開発者ではないし、開発ツールを使うのも面倒です。スクリプトで何とかならないか、簡単にできないものか、いろいろと考えてみました。
試行錯誤の末、作成したのが「save_myuri.vbs」と「restore_myuri.vbs」です。「save_myuri.vbs」は、Windowsの「Shell」オブジェクトを利用し、現在エクスプローラーおよびIEで開いているウィンドウの場所(LocationURL)を取得して、ユーザープロファイルフォルダ内の「SAVEDURL.txt」に保存します(画面2)。
InputKey = MsgBox("再ログオン時に復元できるようにエクスプローラーとIEで開いているウィンドウを保存しますか?",vbYesNo,"シャットダウンまたはログオフ前の確認") if InputKey <> vbYes then WScript.Quit end if Set objWshShell = WScript.CreateObject("WScript.Shell") SAVEDTO = objWshShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\SAVEDURL.txt" Set fso = CreateObject("Scripting.FileSystemObject") if fso.FileExists(SAVEDTO) Then InputKey = MsgBox("前回保存された状態(" & SAVEDTO & ")があります。" & vbCrLf & "削除してよろしいですか?",vbYesNo,"確認") if InputKey <> vbYes then WScript.Echo "中止しました。" WScript.Quit else fso.DeleteFile SAVEDTO, True end if end if OUTPUT = "" set objShell = CreateObject("Shell.Application") set objShellWindows = objShell.Windows if not objShellWindows is nothing then for each objShellWindow in objShellWindows If objShellWindow.LocationURL <> "" then OUTPUT = OUTPUT & objShellWindow.LocationURL & vbCrLF End If Next end if if OUTPUT <> "" then Set outFile = fso.OpenTextFile(SAVEDTO, 2, True) outFile.WriteLine OUTPUT outFile.Close WScript.Echo "Internet Explorer とエクスプローラーの状態をファイル(" & SAVEDTO & ")に保存しました。" else WScript.Echo "状態は保存されませんでした。" end if set objShellWindows = nothing set objShell = nothing set outFile = nothing set fso = nothing
そして、「restore_myuri.vbs」を実行すると、ユーザープロファイルフォルダ内の「SAVEDURL.txt」を読み取り、保存された場所をエクスプローラーとIEで開きます(画面3)。IEはタブを追加して開くように、IEの初回起動時と2回目以降で待ち時間を筆者のPCの性能に合わせて調整しています。なお、ウィンドウの大きさや配置は考慮していません。
Set objWshShell = WScript.CreateObject("WScript.Shell") SAVEDTO = objWshShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\SAVEDURL.txt" Set fso = CreateObject("Scripting.FileSystemObject") InputKey = MsgBox("前回保存された状態(" & SAVEDTO & ")を復元しますか?",vbYesNo,"確認") if InputKey <> vbYes then WScript.Echo "中止しました。" WScript.Quit end if if Not fso.FileExists(SAVEDTO) Then WScript.Echo "前回保存された状態がありません。終了します。" WScript.Quit end if i = 0 Set objTextFile = fso.OpenTextFile(SAVEDTO, 1) Do Until objTextFile.AtEndOfLine TARGETURL = objTextFile.ReadLine if TARGETURL <> "about:blank" then if Mid(TARGETURL,1,8) = "file:///" then TARGETURL = replace(TARGETURL,"file:///","") TARGETURL = replace(TARGETURL,"/","\") TARGETURL = replace(TARGETURL,"%20"," ") TARGETURL = """" & TARGETURL & """" objWshShell.Run TARGETURL else TARGETURL = "cmd /c start " & TARGETURL objWshShell.Run TARGETURL if i = 0 then WScript.Sleep (10000) else WScript.Sleep (2000) end if i = i + 1 end if end if Loop objTextFile.Close Set objTextFile = nothing Set fso = Nothing Set objWshShell = nothing
ちなみに、このスクリプトは数年前にWindows 7向けに作成したものです。その後、Windows 8、Windows 8.1とアップデートしてきましたが、問題なく動きました。
しかし、Windows 10にアップグレードしたところ、問題が発生しました。このスクリプトはIEを前提にしているため、Windows 10の既定のWebブラウザである「Microsoft Edge」との組み合わせでは、URLの保存と開く動作が機能しません。既定のWebブラウザをIEに変更すれば、Windows 8.1以前と同じように動きました。
Windows 10のリリースから1年が経過して、これから本格的にWindows 10に移行しようと計画している企業は多いと思います。システム管理者の方は、さまざまな運用管理タスクをスクリプト化して作業の負担を軽減していると思いますが、Windows 10に移行すると思わぬところに影響が出る可能性があるのでご注意ください。特に、「タスクスケジューラー」に登録した自動実行タスク、ログオンスクリプトなどは要注意です。
ところで、先日、Windows 10 Anniversary Update(バージョン1607)のPCで離席中、Windows UpdateでPCが自動的に再起動してしまいました。再起動後、「ペイント」が自動起動し、データが復元されているのを目にしました(画面4)。
画面4 Windows 10 Anniversary Update(バージョン1607)には、Windows Updateなどで再起動された後に、一部のアプリケーションデータを復元してくれる機能があるようだ
初めての経験だったのでWindows 10のどのバージョンからの機能であるかは分かりませんが、Windows 10には自動再起動によるデータ損失の影響を少なくする、何かしらの復旧機能が搭載されているようです。ただし、ごく一部のアプリケーションだけのようで、大部分のアプリケーションの未保存だったデータは戻ってきません。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- セーフモードでも起動できないという悪夢からの脱出、再び――Windows 10の場合
個人ユーザーは更新プログラムのコントロールが事実上できなくなってしまったWindows 10。更新プログラムが原因でPCが起動しなくなってしまったときの対処方法を詳しく解説します。 - なぜ、Windows 10のWindows Updateは嫌われているのか?
前回に続き、今回も「Windows Update」に関する話題です。Windows 10のWindows Updateはなぜ不評なのか、良いところはないのか。そして、現状の問題点について取り上げます。 - 終わらないWindows Updateの問題を解決する(2016年9月版)
Windows 7 SP1のWindows Updateに非常に時間がかかることがある。これを解消する方法を紹介しよう。5時間かかった「更新プログラムの確認」作業が15分で終わるようになる。2016年9月中旬の状況に合わせて記事を更新した。 - マイクロソフト、Windows Updateを効率化する「Unified Update Platform」を発表
米マイクロソフトは、Windows Updateを効率化する次世代の更新プログラム配信技術「Unified Update Platform(UUP)」をWindows 10の次期大型アップデートで導入すると告知。まずは、Windows Insider Program参加ユーザーに先行公開する。 - Windows 10時代はトラブル脱出が厄介に?――実際のトラブル例と解決のヒント
Windows 10の新機能や変更点は、トラブル解決を遅らせる原因になるかもしれません。なぜなら、これまでのトラブル解決の経験則が、そのまま使えるとは限らないからです。今回紹介する筆者の二つのトラブル例は、Windows 10やWindows Server 2016で遭遇するかもしれないトラブルを解決するヒントになるかもしれません。