DISMコマンドを使用してWindows 10イメージを修復する

Windows 10をアップグレードインストールなどしている場合に、ソフトウェアの行儀が悪いなどでOSが正常に動かなくなることがあります。
このような場合にWindowsのシステム修復機能というものがあり、システムファイルチェッカーツール(sfc.exe)を使用してWindowsのエラーを修復することができますが、その時にうまく実行できないときの対処です。


sfc /scannowはWindows 10が保存しているイメージファイルを元に、OSシステムファイルを修復・再インストールします。
sfcがうまく動かないということは、このイメージファイルを修復する必要があります。

まずWindows 10のDVDメディアを持っている場合はそれを読み込ませ、DVDを持っていない場合は下記より.isoファイルをダウンロードします。
・Windows 10 のディスク イメージ (ISO ファイル) のダウンロード

今回の場合はWin10_1607_Japanese_x64.isoというファイルで、これを選択して右クリック「マウント」を選択してください。

次にエクスプローラーでPCを開き、DVDのドライブ名を確認します。今回の場合はD:\ドライブとなります。


そして右下のWindowsマークを右クリックして「コマンドプロンプト(管理者)」を開き次のような文字列を入力してEnterキーを押します。赤字のD:\は先ほど確認したドライブ名なので、自分の環境に合わせて変更する必要があります。
DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:D:\Sources\Install.wim:1 /LimitAccess

しばらく待つとWindows 10イメージファイルの復元操作が完了するので、もう一度「sfc /scannow」を実行すれば完了です。

サクラエディタのメニューアイコンが表示されなくなったときの対処


起因はよくわかりませんが、いつの間にかメニューアイコンがすべて非表示となり保存ボタンなどもなくなってしまいました。

このような場合、[設定]=>[共通設定]から「ツールバー」を開きすべて元通りに再設定できます。
ただし設定が初期化されてもよい場合は、サクラエディタをすべて終了した上で、エクスプローラーから %UserProfile%\AppData\Roaming\sakura\ を開き、sakura.iniファイルを削除することでアイコンが表示されるようになります。

空き容量が少なくなったときの「ディスク容量不足」を表示しないようにする

少し古いネットブック(ノートパソコン)やタブレット端末でWindows 7を使用していると、C:\ドライブの空き容量不足などで下記がよく表示されます。
lack-of-disk-space
ディスク容量不足
ドライブ ローカル ディスク (C:\) のディスクの空き容量が少なくなっています。
ここをクリックして、このドライブの領域を開放できるかどうか確認してください。

通知に書いてあるとおりクリックして確認しても、実際には消せるファイルはほとんど無い場合もあります。
そんな場合でも、問答無用でこの通知は表示され続けるので、それを無効化する手順です。

まず[スタート]から[コントロールパネル]を開き”すべてのコントロールパネル項目”にある「通知領域アイコン」をクリックするか、または右下の上向き2重三角をクリックしてカスタマイズを押します。
表示されたアイコンと通知の選択に「エクスプローラー ディスク領域不足」があるので、ここを「アイコンと通知を非表示」にしてあげれば完了です。
lack-of-disk-space-explorer

根本的には、CドライブにあるファイルをUSBメモリやネットワークドライブに移してあげる必要がありますが、場当たり的な対処としてはこれでもOKかと思います。

Windows 10への無料アップグレード「Get Windows 10 App」の削除更新が開始されているようです

Windows 7とWindows 8.1を、無料でWindows 10にアップグレードしてくれる親切で余計なお世話の Get Windows 10 App ですが、ついに役目を終えて更新プログラムにて削除されるようです。
Remove software related to the Windows 10 free upgrade offer
gwx2
Windows Updateを実行してオプションから選択出来ます。
gwx3
更新プログラムをインストール後、コンピューターの再起動が求められます。
gwx4
再起動してログオン中に”個人用設定”が少し表示されるので、このタイミングで削除しているのかと思います。
gwx1
Get Windows 10 Appは「C:\Windows\System32\GWX」にインストールされており、このフォルダがなくなったことを確認すれば削除完了です。

RDP Wrapper Libraryを使用してWindows 10に複数RDPセッションで接続できるようにする

Windows 10も[システムのプロパティ]からリモートタブより設定することで、リモートデスクトップサービス(RDP)を利用して遠隔操作することが出来ます。ただしこれはクライアントOSでは1セッションのみの制限があり、2セッション目からは下記のような表示が出て最初のセッションを閉じるように促されます。
windows10_multiple_rdp_sessions_1
別のユーザーがサインインしています。続行すると、それらのユーザーは切断されます。サインインしますか?

この事象を回避できないか調べてみたところ、RDP Wrapper Libraryというソフトウェアを使うことで複数接続できるようになります。このラッパーライブラリはターミナルサービス(termsrv.dll)を変更することが無いのでWindows Updateなども普通に実施出来ます。
RDP Wrapper Library by Stas’M

現在最新のRDPWrap-v1.6.1.zipをダウンローとしたところ、下記ファイルが含まれていました。
windows10_multiple_rdp_sessions_2
RDPWInst.exe RDPラッパーライブラリのインストール/アンインストールプログラム
RDPCheck.exe RDPチェックユーティリティ(ローカル接続をして複数つなげるか確認するクライアント)
RDPConf.exe RDPラッパー構成ユーティリティ
install.bat/uninstall.bat/update.bat クイックインストール・アンインストール・アップデートバッチファイル

ラッパーライブラリをインストールするには、install.batを右クリックして「管理者として実行」にて自動的に完了しました。RDP接続中の場合は、一旦切断されて再接続されます。
windows10_multiple_rdp_sessions_3

インストール完了後、RDPConf.exeを実行してDiagnostics項目内が全部緑になっているかを確認します。緑になっていれば正常に動作中です。
windows10_multiple_rdp_sessions_4

あとはRDPCheck.exeを使用してローカルから確認するか、外部からリモートデスクトップ接続(mstsc.exe)を複数起動して対象PCにログオンしてみればOKです。
windows10_multiple_rdp_sessions_5

複数接続にはリモートデスクトップサービス クライアントアクセスライセンス(RDS-CAL)が必要になりそうなので、実運用というよりは評価版を使用して使ってみるという形になるかと思います。

Windows Update にて斜体(イタリック)と普通のものが表示される

Windows Updateを実行しようとしたときに、特定の修正プログラムだけ、フォントが斜体(イタリック)で表示されることがあります。
WindowsUpdate_italic
これはオプションでの、お勧めアップデートが斜体で表示されるようです。
あくまでお勧めアップデートなので、OSのセキュリティ修正や安定性などは修正されません。ヘルプファイルの更新だったりドライバの更新だったり、特定の組み合わせ時に動かない処理を修正しているようです。

特にこだわりが無ければすべてのアップデートを実施し、あまり変更したく無い場合は重要なアップデートだけを適用していけばよいかと思います。

Windows Server 2012のRDライセンスマネージャーに表示されるデバイスCAL発行先をエクスポートする

Windows Server 2003ではターミナルサーバーライセンスのPer-Device Client Access Licenseを、Windows Server 2000のリリースキットに収録されてあるLsreport.exeにて実行できました。
そのため同じように、Windows Server 2012に対してLsreport.exeを使用しようとするとエラーが表示され実行できません。
Windows Server 2008まではLsreport.exeが使用できていたので、どうやらそこまでが限界のようです。

リモートデスクトップライセンスマネージャで表示されているのを目コピーしてもよいのですがとてもメンドくさくて、画像ファイルにすると検索ができずにサイズが大きくなります。

それならば他に方法がないかと調べてみると、リモートデスクトップのAPIが公開されていたのでこれを使ってみたらよいかなと実験してみました。
・Remote Desktop Services API
https://technet.microsoft.com/ja-jp/aa383464
Win32_TSIssuedLicenseに様々なクラスがあり、それを呼び出せば普通に値が取得できるようです。

まずはライセンスの種類を取得するため、TSLicenseKeyPackを呼び出して値を記録します。
・Win32_TSLicenseKeyPack class
https://msdn.microsoft.com/en-us/library/aa383803.aspx
var KeyPackScope = new ManagementScope(@"\\" + System.Net.Dns.GetHostName() + @"\root\cimv2:Win32_TSIssuedLicense");
ObjectQuery KeyPackQuery = new ObjectQuery("Select * from Win32_TSLicenseKeyPack");
ManagementObjectSearcher KeyPackSearcher = new ManagementObjectSearcher(KeyPackScope, KeyPackQuery);
ManagementObjectCollection KeyPackCollection = KeyPackSearcher.Get();

そのあと、TSIssuedLicenseを呼び出してライセンスの一覧を取得し、ライセンスの種類は先ほど取得したものと置き換えます。
・Win32_TSIssuedLicense class
https://msdn.microsoft.com/en-us/library/aa383802.aspx
var IssuedLicenseScope = new ManagementScope(@"\\" + System.Net.Dns.GetHostName() + @"\root\cimv2:Win32_TSIssuedLicense");
ObjectQuery IssuedLicenseQuery = new ObjectQuery("Select * from Win32_TSIssuedLicense");
ManagementObjectSearcher IssuedLicenseSearcher = new ManagementObjectSearcher(IssuedLicenseScope, IssuedLicenseQuery);
ManagementObjectCollection IssuedLicenseCollection = IssuedLicenseSearcher.Get();

あとは取得したデータを好きにConsole.WriteLineで出力すれば、リリースキットのLsreport.exeと同じようなものが作れました。
一応、サンプルを置いておきます。エラー処理はほとんどしていないので、実際に使うときはもう少しtry/catchを入れたほうがよさそうです。

実行ファイル:LSReport_bin
ソースコード:LSReport_prj