Почему DNS, по-видимому, участвует в выдаче «dir» в Windows 10?

Почему DNS, по-видимому, участвует в выдаче «dir» в Windows 10?

По сложным причинам мне пришлось сделать идентичную копию cmd.exeи переименовать ее в cmd-2.exe, которую я поместил в качестве ярлыка на панель задач, чтобы «сгруппировать» их в разные группы панели задач.

Иногда я забываю об этом и, чтобы открыть новый, cmd.exeя нажимаю среднюю кнопку мыши на иконке на панели задач, чтобы открыть новый cmd.exe. Затем я ввожу команду, например, dirи она выдает кучу ерунды, включая: DNS bad key, что происходит только если я случайно использую cmd-2.exe, а не если я открываю «настоящий» cmd.exe, так что это не «практическая» проблема.

Однако мне интересно, почему это сообщение вообще печатается. Видимо, не удается выполнить какой-то поиск DNS или что-то в этом роде? Почему DNS вообще участвует в выдаче dirсписка файлов на моем локальном компьютере? У меня не настроена сеть, нет облачных дисков, ничего подобного. Меня пугает, что (по-видимому) выполняются запросы DNS, когда я выдаю dir.

Может быть, DNS bad keyимеется в виду что-то совершенно не связанное с системой доменных имен? Я даже не знаю, что такое "плохой ключ" в этом контексте.

решение1

Второй cmd.exe не может найти и впоследствии загрузить локализованные строки из библиотеки ресурсов-спутника cmd.exe.mui.

Вот что он на самом деле пытается сказать, взято из 10.0.18362.1 (160101.0800):

  • 0x235F: "Том на диске %1 равен %2"
  • 0x235B: «Серийный номер тома %1»
  • 0x2339: "Каталог %1"

На самом деле это первые три строки простого dirвывода команды.

Это забавно. В таблице системных сообщений по умолчанию нет записей для сообщений с номерами 0x235F и 0x235B. Поэтому для первых двух выходов вы получаете это зашифрованное сообщение, как показано на скриншоте консоли @harrymc.

Но для 0x2339 есть запись в таблице системных сообщений по умолчанию, физически хранящаяся в KernelBase.dll.mui, указывающая на текст «DNS bad key»:

скриншот взят из ResHacker

Так уж получилось, что он разделяет номер строки "Directory of %1" ресурсов командного процессора: откат, не предусмотренный разработчиками cmd.exe. Так что ссылка на DNS — просто совпадение, это может быть что угодно.

Обратите внимание, что правильное сообщение содержит переменный аргумент (имя каталога), а сообщение DNS — нет. Думаю, именно поэтому после этого больше ничего не выводится — оно может просто завершиться.

решение2

Мне удалось воспроизвести проблему:

введите описание изображения здесь

(Согласен, что сообщения не очень информативны.)

Проблема в том, что начиная с Vista все текстовые сообщения компилируются в отдельный файл, поэтому Windows будет искать файл сообщения с вашим новым именем CMD и не сможет его найти.

Недостаточно просто скопировать cmd.exeв cmd-2.exe. Вам также нужно скопировать в папку %WinDir%\System32\en-US (или на вашем языке) файл cmd.exe.muiв cmd-2.exe.mui, иначе вы будете получать эти сумасшедшие сообщения каждый раз, когда cmd-2.exe нужно выдать сообщение.

Примечание: «DNS» здесь не относится к Интернету. система доменных имен. Это просто совпадение.

Связанный контент