Windows 10 で「dir」を発行する際に DNS が関与しているのはなぜでしょうか?

Windows 10 で「dir」を発行する際に DNS が関与しているのはなぜでしょうか?

複雑な理由により、 の同一コピーを作成して にcmd.exe名前を変更しcmd-2.exe、それをタスクバーのショートカットとして配置して、異なるタスクバー グループに「グループ化」する必要がありました。

時々、これを忘れて、新しい を開くためにcmd.exeタスクバーアイコンを中クリックし、新しい を開きますcmd.exe。次に、 などのコマンドを入力するdirと、 を含む一連の意味不明なメッセージが表示されます。DNS bad keyこれは、誤って を使用した場合にのみ発生しcmd-2.exe、「実際の」 を開いた場合には発生しないcmd.exeため、「実際的な」問題ではありません。

しかし、なぜそのメッセージが印刷されるのか不思議です。どうやら、何らかの DNS ルックアップか何かに失敗しているのでしょうか?dirローカル コンピューター上のファイルを一覧表示する発行に、なぜ DNS が関係しているのでしょうか? ネットワーク設定もクラウド ドライブも、そのようなものは一切ありません。 を発行すると (どうやら) DNS クエリが実行されているように見えるので怖いですdir

おそらく、DNS bad keyドメイン ネーム システムとはまったく関係のない何かを指しているのでしょうか? その文脈では「不正なキー」が何を意味するのかさえわかりません。

答え1

2 番目の cmd.exe は、cmd.exe.mui サテライト リソース ライブラリからローカライズされた文字列を見つけて読み込むことができません。

10.0.18362.1 (160101.0800) から抜粋した、実際に伝えようとしている内容は次のとおりです。

  • 0x235F: 「ドライブ %1 のボリュームは %2 です」
  • 0x235B: 「ボリュームシリアル番号は%1です」
  • 0x2339: 「%1 のディレクトリ」

これは実際には、単純なコマンド出力の最初の 3 行ですdir

これは面白いですね。デフォルトのシステム メッセージ テーブルには、メッセージ番号 0x235F と 0x235B のエントリがありません。そのため、最初の 2 つの出力では、@harrymc のコンソール スクリーンショットに示されているような不可解なメッセージが表示されます。

しかし、0x2339 の場合、KernelBase.dll.mui に物理的に保存されているデフォルトのシステム メッセージ テーブルに、「DNS 不正キー」というテキストを指すエントリがあります。

ResHackerから取得したスクリーンショット

たまたま、コマンド プロセッサのリソースの「%1 のディレクトリ」行の番号が共有されています。これは、cmd.exe の開発者が予期していなかったフォールバックです。したがって、DNS 参照は単なる偶然であり、何でもあり得ます。

適切なメッセージには可変引数 (ディレクトリ名) が含まれていますが、DNS メッセージには含まれていないことに注意してください。これが、その後に出力がなくなる理由だと思います。単に終了するだけかもしれません。

答え2

問題を再現することができました:

ここに画像の説明を入力してください

(メッセージにあまり情報がないということには同意します。)

問題は、Vista 以降ではすべてのテキスト メッセージが個別のファイルにコンパイルされるため、Windows が新しい CMD 名でメッセージ ファイルを検索しても見つけられないことです。

cmd.exeにコピーするだけでは不十分です。フォルダ (または言語) 内のファイルもにcmd-2.exeコピーする必要があります。そうしないと、 メッセージを発行する必要があるたびに、このようなおかしなメッセージが表示されます。%WinDir%\System32\en-UScmd.exe.muicmd-2.exe.muicmd-2.exe

注: ここでの「DNS」はインターネットを指すものではありません ドメインネームシステムこれは単なる偶然です。

関連情報