コマンドライン – Windows 10で「dir」の発行にDNSが明らかに関与しているのはなぜですか?

cmd.exe command-line dir dns windows-10

ややこしい理由で、cmd.exeの同じコピーを作ってcmd-2.exeに名前を変えて、タスクバーにショートカットとして置いて別のタスクバーグループに「グループ化」させることを余儀なくされています

時々、このことを忘れてしまい、新しいcmd.exeを開くためにタスクバーのアイコンをミドルクリックして新しいcmd.exeを開くことがあります。その後、dir のようなコマンドを入力すると、DNS bad key を含む無意味なコマンドがたくさん出てきます。DNS bad keyは、cmd-2.exeを誤って使ってしまった場合にしか起こらず、”本物 “のcmd.exeを開いた場合には起こらないので、”実用的 “な問題ではありません

しかし、なぜそのメッセージが全く出てこないのか不思議です。どうやらDNSの検索か何かに失敗しているのでしょうか?私のローカルコンピュータ上のファイルを一覧表示するためにdirを発行するのに、なぜDNSが全く関係しているのでしょうか?私はネットワークの設定もクラウドドライブも何もしていない。dirを発行したときに(どうやら)DNSの問い合わせがあるのが怖い

もしかしてDNS bad keyはドメイン名システムとは全く関係のないものを指しているのでは?その文脈で「悪い鍵」が何を意味しているのかすら分からない

  98  Khalid  2020-02-10


ベストアンサー

2つ目のcmd.exeでは、cmd.exe.mui衛星リソースライブラリからローカライズされた文字列を検索してロードすることができませんでした

ここでは、10.0.18362.1 (160101.0800) から取得した、それが本当に言おうとしていることを示しています

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

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

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

しかし、0x2339については、KernelBase.dll.muiに物理的に格納されているデフォルトのシステムメッセージテーブルに「DNS bad key」というテキストを指すエントリがあります

screenshot taken from ResHacker

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

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

210  dlatikay  2020-02-10


なんとか重複してしまいました

enter image description here

(メッセージの内容があまり参考にならないのは同意します)

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

cmd.execmd-2.exeにコピーするだけでは十分ではありません。また、%WinDir%\System32\en-US (あるいはあなたの言語) フォルダにファイル cmd.exe.mui から cmd-2.exe.mui をコピーする必要があります

注意:ここでいう「DNS」とは、インターネットドメイン名システムのことではありません。これは単なる偶然です

112  harrymc  2020-02-10


タイトルとURLをコピーしました