Win10チューニング,レジストリ

ファイルのプロパティを見ると『アクセス日時』というのがあります。

t

これは文字通り、そのファイルにアクセスした日時を示すものですが、SSDを使用している場合、アクセスしただけでむやみに更新されるとSSDの寿命を縮めることになるため、無効が望ましい設定となっています。

この設定はWindows7以降はデフォルトで無効になっているので、基本的にはノータッチで問題ありません。

    後述しますが、SSDにWin10A2Uをインストールした人は要注意です。A2Uではデフォルトで有効になっている場合があり、アクセス日時の更新が行われてSSDが無駄に消耗されているかもしれません。ちょっと長いですが、最後までご覧いただければと思います。理屈抜きでサクッと対策をしたい場合はコマンドプロンプト(管理者)を起動して『fsutil behavior set disablelastaccess 1』と入力してください。これで無駄に消耗されることはありません。

逆に有効にしたい場合は、レジストリエディタを開いて、

『HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem』の『NtfsDisableLastAccessUpdate』の値を変更することで無効/有効が切り替えられます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
NtfsDisableLastAccessUpdate


0 → 有効 / アクセス日時を更新する
1 → 無効 / アクセス日時を更新しない (デフォルト値)

Windows10 v1709 Fall Creators Updateまではこの設定方法でした。

ここからが本題ですが、Windows10 v1803 April 2018 Update(以下、Win10A2U)ではこのレジストリ項目の値に変化がありました。

Windows,レジストリ

Windows起動時に 「User Profile Serviceサービスによるログオン処理に失敗しました」 といったようなメッセージが表示されたりしてユーザープロファイルが吹っ飛んだとき、レジストリをちょいといじるだけで復旧できる場合があります。その手順をご紹介。

関連記事
【Win】 Windows7 / 10でユーザープロファイルが突然死する現象が発生中?

なお、この復旧方法は対症療法です。ユーザープロファイルが吹っ飛ぶ根本的な原因をどうにかしないかぎり、再発する可能性があることをご留意ください。

Windows,レジストリ

エクスプローラなどから複数のファイルを選択して、右クリックでコンテキストメニューを開くと、15ファイルまでは

15ファイルまではコンテキストメニューから開ける

『開く』があり、普通に開くことができます。しかし、16ファイル以上になると、

16ファイル以上はコンテキストメニューから開けない

コンテキストメニューからは開けません。『開く』が消えてしまいます。なぜ、このようなことになっているのか。仕様です。

マウス操作だけで多くのファイルを一気に開こうとした際に、この15ファイル制限が不便に感じる場合があるかもしれません。この制限が不便と感じた人は、制限を解除してしまいましょう。

Win10チューニング,レジストリ

Windows7 ⇔ Windows10間でUSBメモリや外付けSSDなどを使ってファイルのやりとりをすると、使用したUSBメモリやストレージが読み込めなくなる場合があります。Windows7とWindows10ではNTFSが使用するLFS(ログファイルシステム)のバージョンが違うため、このような問題が生じます。

打開方法は、Windows10の高速スタートアップを無効にするか、Windows10側の下記のレジストリを編集することで対処可能となっています。

Windows,レジストリ

a

↑一番左の240 240 240が各インターフェイスで使われるデフォルトの灰色になります。で、古いTNだったり白っぽいTNモニタだと灰色が見づらいことありませんか。あります。では濃くしましょう。変更方法は簡単です。

Windows,レジストリ

上記ファイルの並び順、左右でどちらが見やすいでしょうか。

左がXP以降のデフォルトで、右がWindows2000以前になります。どちらが良し悪しというのはありません。古くからWindowsを使っている人には右は懐かしいのではないでしょうか。

以下、ファイル表示の並び順を右側に変更したい人向けの内容になります。

Windows,レジストリ

前回のあらすじ。パフォーマンスモニタのスタートアップイベントトレースを全無効する方法と、wfpdiag.etlへのログ記録を停止する方法

実際にログ取りを停止して運用したらどうなるのか、どういった弊害が出てくるのか、記事を書いた日から運用して、かれこれ2ヶ月ちょいが経ちました。

おもしろおかしい変な挙動が発生することもなく、至って平常運転しております。終了。

うん、まぁ、そりゃね、ログを止めただけですしね、うん…

スタートアップイベントトレースの全無効で、イベントビューアーが無事死亡するのは前にも書いた通りですが、それ以外の部分で何か問題が出てくるといったことはありませんでした。

ただ、たまたまログ取り停止の逆鱗に触れない使い方だった、という可能性は十分にあります。前回からの繰り返しになりますが、変更をオススメするものではありません。

ログ取りを停止する実用的なメリットなんてものはまったくありませんが、あえてメリットとデメリットをまとめます。

<メリット>
・自分にとって不要な動作が停止出来て「やってやったぜ感」を得られる。
・CPUからストレージまで色々と遅い10年以上前のPCだと、もしかしたら微妙にパフォーマンスアップ(というか不意な引っかかりが減ったり)があるかもしれない。 (Ivyマシンでは体感ゼロです)
・書き込みが減ってSSDの寿命が1秒だか1分だか10分だか1時間だか延びる可能性が無きにしも非ずなものの、検証と証明をするためには人類の寿命はあまりにも短すぎた。

<デメリット>
・イベントビューアーが無事死亡。
・何かしらのOSログを見たくなったときに見ることが出来なくなる。
・もしかしたらどこかで影響が出てくるかもしれず、何かあった際に自分でなんとか出来ないなら不安材料にしかならない。

結論、イベントトレースとwfpdiag.etlのログ取り停止は、改造好きっ子による「OS遊び」以上でも以下でもないと思います。

wfpdiag.etlの停止は大量のディスクI/Oが生成されなくなるそうで、サーバ運用者にはメリットがあるかもしれませんが…個人の使用では何も体感出来ませんでした。

Windows,レジストリ

マウスをドラッグしてウィンドウを移動させる日常のOS操作ですが、移動が開始されるまでのドットの「遊び」はデフォルトで4ドットが指定されております(Win7は。他は不明)。

この4ドット、使いにくいと感じたことはありませんか。例えば、マウスの感度が高くて4ドットだとダブルクリックにならないことがあるとか、遊び幅をもっと狭くして細かい位置調整をしたいとか。

この遊び幅はレジストリから簡単に変更することが出来ます。


HKEY_CURRENT_USER\Control Panel\Desktop

横のドット
DragHeight 4(デフォルト)

縦のドット
DragWidth 4(デフォルト)

上記の数値を変更するだけでございます。

もしかしたら他の数値が自分のフィーリングにピッタリだった、なんてことがあるかもしれません。管理人も1-5ドットまで試してみました。が、自分の場合、結局デフォルトの4で落ち着きました…

Windows,レジストリ

そうだ、Quake2をやろう。ということでインストール。パッチを当ててWin98互換モードでquake2.exeをダボォクリック。無事起動。

本来ならこれで終わるはずだったのですが、互換モードにしないで起動すると、同時にrundll32.exeも立ち上がり、何故かMicrosoftに繋ごうとしました。通信先のIPアドレスは65.55.162.27。

試しにこのアドレスをブロックすると、rundll32.exeが延々MSに繋ごうとしてゲームが起動せず。ブロックを解くとゲームが起動。は?Quake2の起動にMSとの通信が必要とか意味わからん。

この挙動は一体なんじゃらほい、と調べてみるとゲームエクスプローラなるWindowsVISTAからある機能で、特定の古いゲームは何故かゲームエクスプローラと連動する場合があるようです。

ゲームエクスプローラを無効にする方法は無いものかと調べても見つからず、設定の問題かと思いゲームエクスプローラのオプションを見ても (各画像はクリックで拡大)

↑こんな感じで通信する要素はまったく無し。

 ゲームエクスプローラを起動して確認したい人はショートカットを新規作成して
 %SystemRoot%\explorer.exe /E,::{ED228FDF-9EA8-4870-83b1-96b02CFE0D52}
 ↑をコピペしてください。あとはショトカを実行すれば起動します。

不要な物は無効にしたい症候群が発症したので、なんとか意地でも無効にしようと、ゲームエクスプローラが使っているレジストリをアクセス拒否してみることに。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX

上記のGameUXの中身を全削除して↓のように全拒否。

このレジストリの変更で互換モードを適用せずにquake2.exeをダボォクリック、無事起動。えええ…。rundll32.exeが起動することもなく、通信も発生しませんでした。互換モードじゃないと、Quake2の起動をさせるのにMSさんの許可がいるってのか、なんなんだこの糞機能は。

とりあえずこれで古いゲームを起動したときに、意味不明にMSに繋ごうとしたり、MSとの通信がブロックされるとゲームが起動しない、というようなことは回避されましたが、根本的にゲームエクスプローラを無効化する方法って無いもんすかね。

大人しく互換モードでやるか、MSと通信すれば良いだけの話ではありますが。モヤッとして完。

以下、余談。「ゲームエクスプローラのせいで古いゲームがオフラインで起動出来なかったり、rundll32.exeがCPUを爆食いするよ!」という投稿が海外でありました。

MS公式フォーラム (海外)
Older games causes rundll32.exe to open and 100% CPU usage

↑の人はレジストリの削除で上手くいったようですが、管理人環境ではレジストリを削除しても新たに作成されました。互換モードで大体解決しそうなものですが、互換モードが上手く働かなかった場合は、レジストリのGameUXの全拒否化をお試しあれ。もちろん自己責任で。

Win7のサポートが終了する2020年くらいに、オフラインゲームマシンと化したWin7機をお使いの人に、この記事が役に立つ日がきっとくる。のだろうか。

ただ、互換モードだと動かなくて、互換モードでないときは動く、それでいてゲームエクスプローラと連動する、そんな古いゲームがこの世にどれだけあるのかは知りません…

ゲームエクスプローラと連動する古いゲームの挙動ぷちまとめ
・互換モードで起動
 ⇒ 何の問題もなく動く(Quake2は)
・互換モードを使わずに起動&MSと通信
 ⇒ ちょっとの時間後に起動
・互換モードを使わずに起動&MSとの通信をブロック
 ⇒ 起動せず。rundll32.exeが延々MSと通信しようとする
・レジストリでGameUXをアクセス拒否化で起動
 ⇒ 互換モードだろうがなかろうが問題なく動く。通信もなし

Windows,レジストリ

C:\Windows\System32\wfpにwfpdiag.etlというファイルがあります。具体的にこれはなんぞ、と申しますと、知らん。中身を覗いたら使用ブラウザ名が記載されていましたので、通信があったアプリのLogだと思われます。MSの説明によると

Windows でのポートのスキャン防止フィルターの動作
このシナリオでは、C:\Windows\System32\wfp\wfpdiag.etl ログに書き込みを行うときに大量のディスク I/O を生成する可能性があります。
(ソース:https://support.microsoft.com/ja-jp/kb/3044882)

と書かれていました。サーバ運用等でLog取りがオンの状態だと負荷が掛かる感じなんですかね、わからん。そもそも通信があったアプリのLogなんていらないし(管理人は別のソフトで記録しているので)、ってことでオフにしてみることに。同ページにレジストリからオフに変更の仕方も書いてありました。

肝心の「次のレジストリサブキー」が書かれていませんでした。

MSーッ!!ど、どこに「CollectNetEvents」を追加したらええんや…

もちろん自分のレジストリを「CollectNetEvents」で検索しても見つからず(追加しろって書いてあるんだから当然)。とりあえず「CollectNetEvents」に絞って検索してみるもHitしたのはわずか4件…。内3件は上記MSサイトの言語違いページ。関連ワードで日本と英語圏を検索してみるもまったく情報無し。3時間くらい検索し続けて辿り着いた中華圏にやっとこさ情報が。


(ソース:C:\Windows\System32\有两个造成大量写入的日志文件,求禁用方法)

「wfpdiag.etlへの書き込みを抑止したい!」
「コマンドプロンプトでこれを実行な ⇒ netsh wfp set options netevents = off」

大体こんな会話だと思う。やってみました。wfpdiag.etlへの書き込みが無くなりました。おわり。

wfpdiag.etlへのLog取り無効化 (コマンドプロンプトで実行)
netsh wfp set options netevents = off

wfpdiag.etlへのLog取り有効化 (コマンドプロンプトで実行)
netsh wfp set options netevents = on

無効化後にレジストリを調べてみると

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BFE\Parameters\Policy\Options
CollectNetEvents 0

上記項目に「CollectNetEvents」が追加されていました。MSの説明を補完すると、この部分に「CollectNetEvents」を追加すると無効化出来ると思います。MSさん頼んまっせ…

余談ですが「netsh wfp set options netevents = off」で検索してみるとHITするのは中国語とロシア語ばかり。あっちの方ではメジャーな設定変更なんですかね…

最後に、この記事はwfpdiag.etlのLog取り無効化をオススメするものではありません。これを無効化したことでどんな影響が出るかは不明です。じゃあなんでやってみた。そこにLogがあるから止めてみた。

12/28追記
ログ取りを停止してから約2ヵ月後、衝撃的でも何でも無い結果を書きました。
【Win7】 イベントトレースとwfpdiag.etlのログを停止して運用するとどうなるの

Windows,レジストリ

にするとどうなるのか。気になったのでやってみました。イベントビューアーが無事死亡しました(無効にしたものを有効に戻すと復活します)。初心者にはオススメ出来ない。え、誰もしないって?ごもっとも。おわり。

以下、気になって調べたメモ2点。

・AITEventLog

AITはApplication Impact Telemetryの略、どうみてもテレメトリ。テレメトリ関連を無効にしていてもLogだけは取り続けている模様。これ単品を無効にしてもイベントビューアーには影響無し。しかし、無効にしても何故かC:\Windows\System32\LogFiles\AITにログ取りは続行中。

下記のレジストリを変更でLog取り完全停止。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\AIT
AITEnable 1 ⇒ 0
(Logを記録しない)

・WdiContextLog

WDIはWindows診断インフラストラクチャの略。MSの説明を見てもいまいち分からないものの、多分、メモリ診断とかネットワーク診断とかその辺?なんたら診断を使わない人や、サービスでDiagnostic系を無効にしている人には影響がないと思われ。OS起動時にC:\Windows\System32\wdi\LogFiles内のWdiContextLog.etl.001~003等に書き込みが発生。イベントビューアーへの影響は無し。これもパフォーマンスモニタで無効にしてもログ取り続行中。

下記のレジストリを変更でLog取り完全停止。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Diagnostics\Performance
DisableDiagnosticTracing 0 ⇒ 1(Logを記録しない)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Diagnostics\Performance\BootCKCLSettings
Start 1 ⇒ 0(Logを記録しない)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Diagnostics\Performance\ShutdownCKCLSettings
Start 1 ⇒ 0(Logを記録しない)

(参考:https://sites.google.com/site/tweakradje/windows/windows-tweaking)

備考:このレジストリ項目は所有者をAdminに変更して、Adminをフルコントロールにしないと編集出来ません

これ、停止したからといって「PCが速くなった!」なんてことはないです。変更をオススメするものではありません。どんな影響が出るかは不明です。日本語情報が全然見つからなかったので書き残しておきます。

12/28追記
ログ取りを停止してから約2ヵ月後、衝撃的でも何でも無い結果を書きました。
【Win7】 イベントトレースとwfpdiag.etlのログを停止して運用するとどうなるの

Windows,レジストリ


結論、犯人はNetwork Connectivity Status Indicator (NCSI)。これで「あっ…(察し)」って人は、以下、見るだけ時間の無駄な記事内容でございます。

で、ずっと疑問でした。OS起動時に数百バイトほど、システムファイル(svchost.exe)が一体akamai鯖と何の通信をしているのだろうと。akamaiって何ぞって人は下記をご参照くださいませ。

 技術評論社
 第19回 世界の2割のトラフィックを捌くAkamai

国内でも海外でもまったく情報が見つからず、長いこと放置していたのですが、パケット解析ソフトのWiresharkを使って中身を覗いてみましたらこんな文字列が。

 www.msftncsi.com: type CNAME, class IN, cname www.msftncsi.com.edgesuite.net
 CNAME: a1961.dspg2.akamai.net

どうやら「www.msftncsi.com」と通信しようとしているようです。「www.msftncsi.com」について調べてみると「ネットワークに繋がっているかどうかの確認用鯖」だそうです。

OS起動⇒接続がちゃんと出来てるか調べてやんよ⇒www.msftncsi.com(akamai)と通信

大体こんな感じ。はい、謎が解けてスッキリしました。特に必要が無く、無効にしたい人は下記のレジストリを変更してどうぞ。

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
 EnableActiveProbing 1(有効) ⇒ 0(無効)

参考文献はWindowsVISTAの記事ですが、Windows7もこれでOS起動時にakamaiに接続しなくなりました。多分Vista以降、全部いけるんじゃないかと思います。

参考文献
付録K:WindowsServer2008のネットワーク接続状態インジケータとこれにより発生するインターネット通信
Appendix K: Network Connectivity Status Indicator and Resulting Internet Communication in Windows Vista