
由於複雜的原因,我被迫製作了相同的副本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」:
它恰好共享命令處理器資源的「%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」不是指互聯網 域名系統。這只是一個巧合。