Windowsの「Windowsの機能の有効化または無効化」の変更時にエラーコード: 0x800F0922 が発生し変更ができないんだが...

f:id:ts0818:20210508180607j:plain

news.mynavi.jp

理化学研究所(理研)、科学技術振興機構(JST)、豪シドニー大学、独ルール大学ボーフム校の4者は5月6日、半導体量子ドット中の電子スピン量子ビットを用いた「確率的テレポーテーション」に成功したと共同で発表した。

理研など、半導体量子ビットにおける「確率的テレポーテーション」に成功 | TECH+

⇧ で、「確率的テレポーテーション」って?

www.riken.jp

確率的テレポーテーション、量子テレポーテーション

量子テレポーテーションとは、ある量子ビットの状態を遠隔地にある量子ビットに転写するアルゴリズムである。このアルゴリズムでは量子もつれを検出する必要があるが、この検出が確率的に成功する場合はテレポーテーションの成功も確率的となる。

半導体量子ビットの確率的テレポーテーションに成功 | 理化学研究所

⇧ う、う~ん、革新的な成果だということは伝わってくるけれど、難解ですな。実用化される日が待ち遠しいといったところですかね。

そんなこんなで、Windowsのエラーについてです。

レッツトライ~。 

 

ポート80番問題

何か、「Nginx」の「Dockerコンテナ」が動かないというね。

f:id:ts0818:20210507194952p:plain

⇧ エラーメッセージはというと、『ERROR: for web Cannot start service web: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.』って言われてもね、っていうか、「PostgreSQL」の「Dockerコンテナ」もすぐに終了してしまっているんだが...

「Nginx」の「Dockerコンテナ」については、

mrkmyki.com

⇧ 他のソフトウェアで、ポートが既に使用されてるんじゃないかと。

で、「80」番ポートを使ってるものを調べたところ、

f:id:ts0818:20210507195429p:plain

⇧「System」って輩が「80」番ポートを使ってましたと。

 

Windowsのtasklistで表示される「イメージ名」の「System」って何?

とりあえず、「タスク マネージャー」で「ファイルの場所を開く(O)」をしてみた。

f:id:ts0818:20210508095628p:plain

そうすると、「C:\Windows\System32\ntoskrnl.exe」って実行ファイルが選択されましたと。

f:id:ts0818:20210508095903p:plain

「ntoskrnl.exe」でググったところ、

ntoskrnl.exe (Windows NT operating system kernel の略) またはカーネルイメージ (kernel image) とは、Windows NTカーネル空間のカーネルおよびエグゼキュティブ・レイヤー(実行層)であり、ハードウェア仮想化プロセスおよびメモリ管理、といった様々なシステムサービスを受け持ち、システムの基本的な部分を構成する。

ntoskrnl.exe - Wikipedia

ntoskrnl.exeは上層の「エグゼキュティブ」と下層の「カーネル」から構成される。エグゼキュティブはI/O、オブジェクト、セキュリティ、プロセス、プロセス間通信 (IPC)、仮想メモリウィンドウおよびグラフィックの管理を司る。カーネルはスレッドスケジューリング、第1レベル割り込みハンドリング遅延プロシージャコール英語版 (Deferred Procedure Calls ; DPC) などの基本的なオペレーティングシステムサービスを提供する。

ntoskrnl.exe - Wikipedia

⇧ と言っていて、 

⇧ 上図のような「カーネルモード」の部分が「ntoskrnl.exe」ってことみたいね。

歴史的な経緯を確認してみると、 

NTカーネル

詳細は「カーネル」を参照

NTカーネルはNT ExecutiveとHALの中間にある。NT 5.2までは幾つかのNTカーネルが存在したが、Windows Vistaからはntoskrnl.exeに統一された。

等、幾つか実装が分かれていた。

Windows NT系 - Wikipedia

⇧「Windows Vista」以降は、「ntoskrnl.exe」が「NTカーネル」ということらしく、「NTカーネル」について、『詳細は「カーネル」を参照』とあるので確認しますか。

カーネルkernel)は、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアソフトウェアコンポーネントのやりとりを管理する。

カーネル - Wikipedia

オペレーティングシステムの基本コンポーネントとして、カーネルメモリCPU入出力を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、プロセス間通信システムコールなどを提供する。

カーネル - Wikipedia

これらのタスクはカーネルによって方式が異なり、設計も実装も異なる。モノリシックカーネルは全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。マイクロカーネルはサービスの大部分をユーザー空間で実行し、コードの保守性とモジュール性を向上させようとする。

カーネル - Wikipedia

多くのカーネルはこの二つのカテゴリのいずれか、あるいは中間である。

カーネル - Wikipedia

⇧ ってな感じで、「カーネル」には、

の2つのカテゴリが存在しますと。

それぞれのイメージ図は以下のようになるらしい。

 

モノシリックカーネル」をベースとした場合と「マイクロカーネル」をベースとした場合で「OS(Operation System)」の構成が変わってくるみたいね。

話を「カーネル」に戻しますと、 

f:id:ts0818:20210508101740p:plain

カーネルアプリケーションソフトウェアとコンピュータのハードウェアを結び付ける。

カーネル - Wikipedia

⇧ ということみたいね。

Wikipediaさんの情報を元に整理すると、『Windowsのtasklistで表示される「イメージ名」の「System」』って「プロセス」は「ntoskrnl.exe」と言うらしく、『NTカーネルはNT ExecutiveとHALの中間にある。NT 5.2までは幾つかのNTカーネルが存在したが、Windows Vistaからはntoskrnl.exeに統一された。』とあるので、

 System(Windowsプロセス) == ntoskrnl.exe == NTカーネル

ってことになるみたいね。

ちなみに、「ntoskrnl.exe」のプロパティを確認したところ、

f:id:ts0818:20210508104618j:plain

⇧「元のファイル名」に「ntkrnlmp.exe」って記載があったんで検索をしてみたんだけど、

f:id:ts0818:20210508115407p:plain

⇧ ファイル自体は存在しないみたいね、紛らわしいな~...
  

「ntoskrnl.exe」の80番ポート問題

長々と脱線しまくりましたが、「ntoskrnl.exe」って「プロセス」が「80」番ポートを占有してるってことが判明したわけなんだけど、 

docs.microsoft.com

⇧ 海外でもQ&Aに上がってるっぽいですね。

「ntoskrnl.exe」の何が「80」番ポートを占有してるのか?

security.stackexchange.com

I was experiencing similar symptoms where port 80 was being used by the ntoskrnl process. In my case, the Web Deployment Agent Service was hogging port 80. I fixed it by disabling the service and changing its startup type from automatic to manual. See http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/.

https://security.stackexchange.com/questions/13415/why-is-system32-ntoskrnl-exe-blocking-port-80

⇧ 上記サイト様によりますと、「Web Deployment Agent Service」ってのが、「80」番ポートを占有してることがありますと。

「Web Deployment Agent Service」って?

docs.microsoft.com

  • If the destination is Windows Server 2003 running IIS6, you can connect to its Web Deployment Agent Service (also known as the Remote Agent Service) endpoint. The Remote Agent Service provides security for this connection, and is only accessible to administrator users.

https://docs.microsoft.com/en-us/iis/publish/using-web-deploy/introduction-to-web-deploy

⇧ よく分からんけど、「IIS(Internet Information Services)」が起動してる時に接続される「エンドポイント」らしい。しかも、

 Web Deployment Agent Service == Remote Agent Service

ってことみたいね、カオスだな~...

そして、

⇧ 上図を見ても、「Web Deployment Agent Service」と「IIS(Internet Information Services)」の関係が全く見えてこないんだが...

IIS(Internet Information Services)」のアーキテクチャを見てみても、

docs.microsoft.com

⇧「Web Deployment Agent Service」または「Remote Agent Service」出てこないんだが...

ただ、一つだけ確からしいことは、

docs.microsoft.com

⇧「Remote Agent Service」がデフォルトで「80」番ポートを占有してるってことですかね。ただ、「http://servername.com/MSDEPLOYAGENTSERVICE」のURLにアクセスできないんだけどね...

 

Windowsの機能の有効化または無効化」できないんだけど...

「Remote Agent Service」が「80」番ポートを占有してるっぽいんだけど、何故か、ネットの情報の多くが「World Wide Web サービス」を停止すれば解決するっていうことで、「コントロール パネル」 を開きます。

f:id:ts0818:20210508154442p:plain

「プログラム」を選択。

f:id:ts0818:20210508154615p:plain

Windowsの機能の有効化または無効化」を選択。

f:id:ts0818:20210507221842p:plain

「インターネットインフォメーションサービス」の中の、

f:id:ts0818:20210507195821p:plain

World Wide Web サービス」 のチェックを外せばOKらしい。

f:id:ts0818:20210507195850p:plain

何か、「エラーコード: 0x800F0922」が出て変更できないんだが...

f:id:ts0818:20210507195728p:plain

f:id:ts0818:20210507195936p:plain

⇧ はい、エラー。

「この問題の解決方法を表示する」で遷移させられるページが以下。 

docs.microsoft.com

⇧ で、全く使えない情報しか載ってない、流石、Microsoftさん、ゆるぎない安定の不親切さ。何故かというと、

f:id:ts0818:20210507223027p:plain

⇧ ってやったにも関わらず、

f:id:ts0818:20210507224014p:plain

f:id:ts0818:20210507224117p:plain

⇧ まったく効果ないというね...

で、ネットで情報を探ったところ、

www.partitionwizard.jp

 

f:id:ts0818:20210507200308p:plain

⇧ そしたらば、PCを再起動すればOKらしい。

駄目でしたけど...

っていうかPC再起動したにも関わらず、「コンピューターを再起動してやり直してください。」って喧嘩売ってるんかね?

f:id:ts0818:20210507201950p:plain

というか異常が見当たらないっぽい... 

f:id:ts0818:20210507202835p:plain

Windows update」についても確認してみる。

f:id:ts0818:20210507205207p:plain

f:id:ts0818:20210507205050p:plain

トラブルシューティングツールの実行」で。 

f:id:ts0818:20210507204940p:plain

「閉じる」で。

f:id:ts0818:20210507204824p:plain

「今すぐ再起動する」してみた。 

f:id:ts0818:20210507221102p:plain

変わらんかったけどね...

で、「レジストリファイル」を編集したらイケるって情報が。 

kc.mcafee.com

やってみた。 

f:id:ts0818:20210507225424p:plain 

f:id:ts0818:20210507225503p:plain

駄目でしたけど...

何をやっても「無効化」できないとか、嫌がらせとしか思えん... 

dism /online /get-features /format:table    

f:id:ts0818:20210507233910p:plain

------------------------------------------- | --
機能名                                         | 状態
------------------------------------------- | --
Printing-PrintToPDFServices-Features        | 有効
Printing-XPSServices-Features               | 有効
TelnetClient                                | 無効
TFTP                                        | 無効
LegacyComponents                            | 無効
DirectPlay                                  | 無効
Printing-Foundation-Features                | 有効
Printing-Foundation-InternetPrinting-Client | 有効
Printing-Foundation-LPDPrintService         | 無効
Printing-Foundation-LPRPortMonitor          | 無効
SimpleTCP                                   | 無効
Windows-Identity-Foundation                 | 無効
NetFx3                                      | 有効
WCF-HTTP-Activation                         | 無効
WCF-NonHTTP-Activation                      | 無効
IIS-WebServerRole                           | 有効
IIS-WebServer                               | 有効
IIS-CommonHttpFeatures                      | 無効
IIS-HttpErrors                              | 無効
IIS-HttpRedirect                            | 無効
IIS-ApplicationDevelopment                  | 有効
IIS-Security                                | 有効
IIS-RequestFiltering                        | 有効
IIS-NetFxExtensibility                      | 無効
IIS-NetFxExtensibility45                    | 有効
IIS-HealthAndDiagnostics                    | 無効
IIS-HttpLogging                             | 無効
IIS-LoggingLibraries                        | 無効
IIS-RequestMonitor                          | 無効
IIS-HttpTracing                             | 無効
IIS-URLAuthorization                        | 無効
IIS-IPSecurity                              | 無効
IIS-Performance                             | 無効
IIS-HttpCompressionDynamic                  | 無効
IIS-WebServerManagementTools                | 有効
IIS-ManagementScriptingTools                | 無効
IIS-IIS6ManagementCompatibility             | 無効
IIS-Metabase                                | 無効
WAS-WindowsActivationService                | 有効
WAS-ProcessModel                            | 有効
WAS-NetFxEnvironment                        | 無効
WAS-ConfigurationAPI                        | 有効
IIS-HostableWebCore                         | 無効
WCF-Services45                              | 有効
WCF-HTTP-Activation45                       | 無効
WCF-TCP-Activation45                        | 有効
WCF-Pipe-Activation45                       | 有効
WCF-MSMQ-Activation45                       | 有効
WCF-TCP-PortSharing45                       | 有効
IIS-StaticContent                           | 無効
IIS-DefaultDocument                         | 無効
IIS-DirectoryBrowsing                       | 無効
IIS-WebDAV                                  | 無効
IIS-WebSockets                              | 無効
IIS-ApplicationInit                         | 無効
IIS-ASPNET                                  | 無効
IIS-ASPNET45                                | 無効
IIS-ASP                                     | 無効
IIS-CGI                                     | 無効
IIS-ISAPIExtensions                         | 無効
IIS-ISAPIFilter                             | 無効
IIS-ServerSideIncludes                      | 無効
IIS-CustomLogging                           | 無効
IIS-BasicAuthentication                     | 無効
IIS-HttpCompressionStatic                   | 無効
IIS-ManagementConsole                       | 有効
IIS-ManagementService                       | 無効
IIS-WMICompatibility                        | 無効
IIS-LegacyScripts                           | 無効
IIS-LegacySnapIn                            | 無効
IIS-FTPServer                               | 無効
IIS-FTPSvc                                  | 無効
IIS-FTPExtensibility                        | 無効
MSMQ-Container                              | 有効
MSMQ-DCOMProxy                              | 無効
MSMQ-Server                                 | 有効
MSMQ-HTTP                                   | 無効
MSMQ-Multicast                              | 無効
MSMQ-Triggers                               | 無効
MediaPlayback                               | 有効
WindowsMediaPlayer                          | 有効
Internet-Explorer-Optional-amd64            | 有効
SMB1Protocol-Deprecation                    | 無効
Windows-Defender-Default-Definitions        | 無効
SearchEngine-Client-Package                 | 有効
MSRDC-Infrastructure                        | 有効
TIFFIFilter                                 | 無効
NetFx4-AdvSrvs                              | 有効
NetFx4Extended-ASPNET45                     | 有効
WorkFolders-Client                          | 有効
Client-ProjFS                               | 無効
MicrosoftWindowsPowerShellV2Root            | 有効
MicrosoftWindowsPowerShellV2                | 有効
Microsoft-Windows-Subsystem-Linux           | 有効
HypervisorPlatform                          | 無効
VirtualMachinePlatform                      | 有効
SMB1Protocol                                | 無効
SMB1Protocol-Client                         | 無効
SMB1Protocol-Server                         | 無効

操作は正常に完了しました。

⇧ ってな感じで、コマンドで「Windowsの機能の有効化または無効化」の一覧を表示できるらしい。

というか、「サービス」の「World Wide Web 発行サービス」を停止したところ、

f:id:ts0818:20210508155711p:plain

「80」番ポートが解放されたっぽい...

f:id:ts0818:20210508155937p:plain

ちなみに、「Windowsの機能の有効化または無効化」のほうは、チェック付いたままという...

f:id:ts0818:20210508160126p:plain

コマンドで表示される「Windowsの機能の有効化または無効化」のほうも変わらずでした。

Windowsの機能の有効化または無効化」で「World Wide Web サービス」のチェックは、

f:id:ts0818:20210508160518p:plain

⇧ 結局、外せずというね...

最早、バグと言っても過言ではない気がしてならんのだが...

とりあえずは、「80」番ポート問題は解決できたけども、「エラーコード: 0x800F0922」は解決できずというね...

ちなみに、みんな大好き「イベントビューアー」の情報を、Power Shellの「Get-EventLog」っていうコマンドで参照できるらしいんですが、「エラーコード」による絞り込みができなさそうなんですよね...

そして、

qiita.com

⇧ 上記サイト様によりますと、「wevtutil」ってコマンドでも「イベントビューアー」の情報を取得できるらしいのですが、「エラーコード」では絞り込めないのかな...

相変わらず、Windowsブラックボックス過ぎて疲れるな...

今回はこのへんで。