為什麼 DNS 顯然參與了 Windows 10 上的「dir」發布?

為什麼 DNS 顯然參與了 Windows 10 上的「dir」發布?

由於複雜的原因,我被迫製作了相同的副本cmd.exe並將其重命名為cmd-2.exe,我將其作為任務欄上的快捷方式將它們「分組」在不同的任務欄組中。

有時,我忘記了這一點,要打開一個新的,cmd.exe我中鍵單擊該任務欄圖標以打開一個新的cmd.exe.然後我輸入一個命令,例如dir,它會輸出一堆廢話,包括:DNS bad key,只有當我不小心使用 時才會發生這種情況cmd-2.exe,而不是當我打開“real”時才會發生cmd.exe,所以這不是一個“實際”問題。

但是,我想知道為什麼會列印該訊息。它顯然無法進行某種 DNS 查找或其他操作嗎?為什麼 DNS 會參與發布dir本機上的檔案清單?我沒有設定網絡,沒有雲端驅動器,沒有任何類似的東西。讓我害怕的是(顯然)當我發出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

它恰好共享命令處理器資源的「%1 目錄」行的編號:這是 cmd.exe 開發人員沒有預料到的後備方案。所以 DNS 引用只是一個巧合,它可能是任何東西。

請注意,正確的訊息包含變數參數(目錄名稱),而 DNS 訊息則不包含。我想這就是為什麼之後沒有更多輸出的原因 - 它可能只是終止。

答案2

我已經成功地複製了這個問題:

在此輸入影像描述

(我同意這些訊息的資訊量不大。)

問題是,從 Vista 開始,所有文字訊息都編譯到單獨的檔案中,因此 Windows 會搜尋具有新 CMD 名稱的訊息文件,但無法找到它。

cmd.exe複製到是不夠的cmd-2.exe。您還需要將文件複製到資料夾(或您的語言)中,%WinDir%\System32\en-US 否則您將在 需要發出訊息的任何時候收到這些瘋狂的訊息。cmd.exe.muicmd-2.exe.muicmd-2.exe

注意:這裡的「DNS」不是指互聯網 域名系統。這只是一個巧合。

相關內容