【win電腦-程序CMD自啟動問題-開機就自啟動-查找原因-解決方式】
- 1,情況說明:
- 2,問題描述
- 1-這是什么窗口
- 2-原因分析:
- 3-我的努力-嘗試解決:
- 1,任務管理器中查看狀態
- 2,查看啟動文件夾
- 3,查看任務計劃程序
- 4,從計劃任務里查找
- 5,AutoRun 鉤子啟動
- 6,設置內應用里設定終端
- 4-解決方法:查找父進程PID方式 (成功)
- 解決方式-1:卸載程序
- 解決方式-2:刪除文件
- 5-細節部分
- 1,吐槽:流氓軟件真的很流氓
- 2,犯錯輸出錯誤的IP號
- 3,PID不顯示問題
- 6-總結
1,情況說明:
在日常使用電腦過程中,有段時間了,發現,一開啟電腦,不一會,就會自動彈出CMD界面,就像某些不良軟件,開機自彈出廣告一樣,讓人感到深惡痛絕。
確實有段時間,覺得不能這樣一直慣著它這個軟件,猜測應該有什么軟件調用了,就想著把它揪出來干掉。
2,問題描述
如下圖所示,便是我電腦彈出來的界面,可以看到這只是一個普通cmd的界面,因為有段時間了,本身應該不是錯誤的根源。
1-這是什么窗口
一般身為程序員的話,一看就知道CMD的窗口。
-
窗口類型:這是 Windows Terminal(圖標像一個小黑框帶 ?_ 光標),里邊打開的是 Command Prompt (cmd.exe) 選項卡。
-
路徑提示:左上角顯示 C:\WINDOWS\System32\cmd…,說明當前活動進程就是經典的 cmd, 只不過它運行在 Windows Terminal 的一個標簽頁中
2-原因分析:
列舉問題原因:
1> ① 啟動文件夾
shell:startup有人把批處理腳本(*.bat)、快捷方式或 .lnk 放進了“啟動”文件夾
Win + R → 輸入 shell:startup → 若看到可疑文件,刪除或移走
2》② 任務計劃程序
某軟件安裝時添加了“開機后運行 cmd 執行腳本”的計劃任務
Win + R → taskschd.msc → “任務計劃程序庫”里查看最近創建/觸發的任務,禁用或刪除
③ 注冊表 Run/RunOnce
軟件/腳本寫入了注冊表的自啟動鍵
Win + R → regedit → 找:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
④ 系統服務
某服務啟動后調用 cmd 執行初始化腳本
services.msc → 查看陌生/最近安裝的服務,必要時改為“手動”或“禁用”
⑤ Windows Terminal 設置
Terminal 1.17+ 有 “Launch on machine startup” 開關
打開 Windows Terminal → Settings → Startup → 關閉 Launch on machine startup
那么大致原因就是上述幾種了,我們接下了進行一一排除。
3-我的努力-嘗試解決:
1,任務管理器中查看狀態
如下,為任務管理器 → 啟動應用 列表里的顯示,可以看到這里顯示。
「終端 (Windows Terminal)」已經被禁用,說明它本身不再作為“啟動項”被系統直接拉起
說明:真正觸發的可能是“別的東西”在開機時調用了 cmd.exe,Windows Terminal 只是被當成外殼顯示了出來。
2,查看啟動文件夾
這里找到啟動文件夾。
已經確認 “啟動”文件夾里只有 EvernoteClipper,可以基本排除它觸發空 cmd 窗口。接下來按“排除法”繼續往下查
3,查看任務計劃程序
如下圖,所示已經打開 任務計劃程序 并定位到 Microsoft\Windows\… 這些系統目錄。
但這里我其實不是很理解到底查看哪些目錄,如下僅僅是翻了翻目錄。
4,從計劃任務里查找
如下圖所示,輸入命令,在計劃任務里查找。
在終端中(新開CMD)使用如下指令。
# 以管理員身份打開 PowerShell,然后執行:
Get-ScheduledTask |Where-Object { $_.Actions -match '(cmd\.exe|wt\.exe|\.bat|\.cmd)' } |Select-Object TaskName,TaskPath,State, @{N='Action';E={$_.Actions}}
這樣我們可以知道,PowerShell 里那條 Get-ScheduledTask 查詢沒有返回任何記錄,意味著 計劃任務 里確實沒有調用 cmd.exe / wt.exe / .bat 的條目。
5,AutoRun 鉤子啟動
# 仍在管理員 PowerShell 中運行:
reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun
reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun
如上圖所示,我們知道:AutoRun 鉤子也不存在 → 說明 “每次打開 cmd 都先跑腳本” 這一條徹底排除。
補充:
1,Command Processor : 指 cmd.exe(Windows 命令提示符)的宿主進程
2,AutoRun 鉤子:在注冊表中預留的 AutoRun 字符串值;如果存在,每次 打開 cmd.exe 都會先執行它指向的命令或腳本(通常是 .bat / .cmd / .vbs)
判斷自己有沒有 AutoRun 鉤子
# 用戶級(作用于當前登錄賬戶)
reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun# 機器級(作用于所有賬戶)
reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun
6,設置內應用里設定終端
如下,是 進入 設置 → 應用 → 安裝的應用 → 終端 并把 「在登錄后運行」 的開關徹底關掉——這是關閉 Windows Terminal StartupTask 的圖形化入口。但是重啟后依舊還是重新啟動。
4-解決方法:查找父進程PID方式 (成功)
我之后重啟了一次,因為中間不小心把界面關了,想要重新讓它彈出來,需要重啟。
之后就是如下,又是彈出界面。
那么我們可以嘗試查找父進程的方式。
- 別關掉那只黑框:讓它保持打開。
- Ctrl + Shift + Esc 打開 任務管理器 → 切到 “詳細信息” 選項卡。
- 在表頭任意列上 右鍵 → 選擇列,勾選 “父進程 ID (PPID)”(Win11 叫 父進程)。
- 在列表里找到 cmd.exe(如果標題欄顯示的是 Windows Terminal,進程名可能是 WindowsTerminal.exe,同理操作):
記下它的 PID 和 父進程 (PPID) 兩列數值。
繼續在同一張表里尋找 PID == 剛才的 PPID 的那一行——那一行的 “名稱” 就是 真正的幕后進程。
如上圖,可以看到我的 cmd.exe (PID = 14928) 就是彈出來的窗,下一步只要把它的 父進程 (Parent PID) 查出來,就能知道到底是誰把這個黑框拉起來的。
之后又重啟了下,取保時哪個終端。
如上可以知道WindowsTerminal.exe(PID = 12440)了。
那么使用如下指令進行查找。
# 把 12440 換成你要查詢的 PID
$ppid = (Get-CimInstance Win32_Process -Filter "ProcessId = 12440").ParentProcessId
Get-CimInstance Win32_Process -Filter "ProcessId = $ppid" | Format-Table Name,ProcessId,CommandLine -Auto
可以看到,準確找到對應文件夾和程序。
解決方式-1:卸載程序
既然知道程序名字,那么想著卸載,但沒有找到這個程序。
解決方式-2:刪除文件
后來因為沒找到可以直接卸載的程序,只能直接刪除文件文件了。
之后開機就沒有了。
5-細節部分
1,吐槽:流氓軟件真的很流氓
這里不得不想吐槽一下,當我不需要某種安全軟件的時候,我希望它能完完全全離開,而不是被發現。
2,犯錯輸出錯誤的IP號
自己輸出入命令時輸入錯誤,有時候想要練習一下指令,想著更熟悉一下的時候,其實非常容易出錯啊。
這里,就那個時候在 PowerShell 里直接敲了 wmic …,但把整段條件用了一對括號,PowerShell 會把它當成子表達式而不是普通字符串,于是報 CommandNotFoundException。
后來終端又關了,智能重新開機了。如下是因為終端關了什么也沒有
3,PID不顯示問題
這里考慮到,有些電腦設置時,可能默認不顯示PID,這個時候就需要設置一下。
方式方法:
- 保持 這只 WindowsTerminal.exe(PID = 12444)不要關。
- 在 詳細信息 頁 任意列標題(比如 “PID”)上 右鍵 → 選擇列…,即,在詳細信息下邊,名稱那一欄上進行右鍵,調出選系列。
- 勾選 父進程(Win 11 可能顯示為 Parent process 或 父進程 ID (PPID))→ 確定
- 現在列表里就出現了 父進程 這一列。
如下圖進行選擇。
6-總結
對于普通用戶而言,這還是有些難度的,調取與查看系統各個部分,沒有點極客精神很難堅持下來的。
正常一個用戶,因為按照了一個軟件,就要一直忍受彈窗痛苦,我想起了,《讓子彈飛》其中一個畫面,“我吃著火鍋,唱著歌,突然就被打劫了,所以麻匪,任何時候都要剿,不剿不行。”
當然我也希望我的經歷對你有所幫助。