|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-12-06, 07:02 PM | #1 |
榮譽會員
|
如何用指令行關閉一個工作?
Q:
如何用指令行關閉一個工作? 有一個自動廣播程序,由於設計缺陷需要每天早晨重新啟動一次,即先關閉再開啟。我在xp裡增加了一個計劃工作,開啟操作只要啟動主程序即可,但開啟前的關閉操作就不知道怎麼辦了,用指令行是不是一個可行的方法?(該程序在工作管理器裡面只佔一個工作) 還有其他方法可以在xp的計劃工作中關閉一個正在執行的程序麼? 程序本生沒有提供指令行操作。 A: 解決辦法:taskkill 指令 在計劃工作中執行一個批次處理: -------- @echo off taskkill /IM 工作名.exe cd \ cd Program Files cd SetupDir 主程序.exe cd \ -------- windows xp的工作管理器,大家一定不會陌生。通過「Ctrl+Alt+Del」組合鍵,選項「工作管理器」就可以檢視到本地機完整的工作列表,而且可以通過手工設定工作列表的方式獲的更多的工作訊息,如會話ID、用戶名等,但遺憾的是,我們檢視不到這些工作到底提供了哪些系統服務。在Windows XP中新增了一個指令行工具「tasklist.exe」能實現上面的功能。 「Tasklist」指令是一個用來顯示執行在本機或遠端電腦上的所有工作的指令行工具,帶有多個執行參數。 它的使用格式為: TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH] 參數列表: /S system 指定連線到的遠端系統。 /U [domain\]user 指定使用哪個用戶執行這個指令。 /P [password] 為指定的用戶指定密碼。 /M [module] 列出使用指定的 DLL 模組的所有工作。 如果沒有指定模組名,顯示每個工作載入的所有模組。 /SVC 顯示每個工作中的服務。 /V 指定要顯示詳述訊息。 /FI filter 顯示一系列符合篩選器指定的工作。 /FO format 指定輸超過範圍式,有效值: "TABLE"、"LIST"、"CSV"。 /NH 指定欄標頭不應該在輸出中顯示。 只對 "TABLE" 和 "CSV" 格式有效。 1、 使用「Tasklist」指令檢視本地機工作 執行「命令提示字元」程序,在提示號視窗中輸入:「tasklist」指令(圖一),這樣就顯示本地機的所有工作。本地機的顯示結果由五部分組成:圖像名(工作名)、PID、會話名、會話#、記憶體使用。 2、 檢視遠端系統的工作 在命令提示字元下輸入(圖二): 「tasklist /s 218.22.123.26 /u jtdd /p 12345678」(不包括引號) 其中/s參數後的「218.22.123.26」指要檢視的遠端系統的IP位址,/u後的「jtdd」指tasklist指令使用的用戶帳號,它是遠端系統上的一個合法帳號,/p後的「12345678」指jtdd帳號的密碼,。 這樣,通過上面的指令,我們就可以檢視到遠端系統的工作了。 小提示:使用tasklist指令檢視遠端系統的工作時,需要遠端機器的RPC 伺服器的支持,否則,該指令就不能正常使用。 3、 檢視系統工作提供的服務 tasklist指令不但可以檢視系統工作,而且還可以檢視每個工作提供的服務。 如檢視本地機的工作「SVCHOST.EXE」提供的服務,在命令提示字元下輸入: 「tasklist /svc」指令即可(圖三),你會驚奇的發現,有四個「SVCHOST.EXE」工作,原來有二十幾項服務使用這個工作,對於遠端系統來說,檢視系統服務也很簡單,使用」 tasklist /s 218.22.123.26 /u jtdd /p 12345678 /svc」指令,就可以檢視IP位址為「218.22.123.26」的遠端系統工作所提供的服務。 4、 檢視使用DLL模組文件的工作列表 例如,我們要檢視本機系統中哪些工作使用了「shell32.dll」 DLL模組文件。 (圖四)在命令提示字元下輸入: tasklist /m shell32.dll 這時系統將顯示使用工作列表。 5、 使用篩選器尋找指定的工作 在命令提示字元下輸入: 「TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running「 這樣就列出了系統中正在執行的非「SYSTEM「狀態的所有工作(圖五)。 其中「/FI「為篩選器參數,」 ne「和」eq「為關係運算符」不相等「和」相等「。 補充: 談到「Tasklist」指令,我們就不得不提它得孿生兄弟「taskkill」指令,顧名思義,它是用來殺死工作的。 如要殺死本地機的「notepad.exe」工作。 首先,使用Tasklist尋找它的PID,系統顯示本地機「notepad.exe」工作的PID值為「1132「,然後執行「taskkill /pid 1132」即可,或則執行」 taskkill /IM notepad.exe「也可, 其中」 /pid 「參數後面跟要終止工作的PID值,「/IM「參數後面為工作的圖像名。 「Tasklist」指令的用法還有很多,由於篇幅關係,就不詳細介紹了,有興趣的朋友可以參考有關技術資料,進行深入研究。 還有!下面方法也可以.,,, 引用: 問:怎麼才能關掉一個用工作管理器關不了的工作?我前段時間發現我的電腦裡多了一個工作,只要開機就在,我用工作管理器卻怎麼關也關不了 答1:殺工作很容易,隨便找個工具都行。比如IceSword。關鍵是找到這個工作的啟動方式,不然下次重啟它又出來了。順便教大家一招狠的。其實用Windows原有的的工具就能殺大部分工作: c:\>ntsd -c q -p PID 只有System、SMSS.EXE和CSRSS.EXE不能殺。前兩個是純內核態的,最後那個是Win32子系統,ntsd本身需要它。ntsd從2000開始就是系統原有的的用戶態偵錯工具。被偵錯器附著(attach)的工作會隨偵錯器一起結束, 所以可以用來在指令行下終止工作。使用ntsd自動就獲得了debug權限,從而能殺掉大部分的工作。ntsd會新開一個偵錯視窗,本來在純指令行下無法控制,但如果只是簡單的指令,比如結束(q),用-c參數從指令行傳送就行了。NtsdNtsd 按照慣例也向軟體開發人員提供。只有系統開發人員使用此指令。有關詳細資料,請參閱 NTSD 中所附的求助文件。用法:開個cmd.exe視窗,輸入: ntsd -c q -p PID 把最後那個PID,改成你要終止的工作的ID。如果你不知道工作的ID,工作管理器->工作選擇項->檢視->選項列->勾上"PID(工作標幟符)",然後就能看見了。 答2:xp下還有兩個好東東tasklist和tskill。tasklist能列出所有的工作,和相應的訊息。tskill能查殺工作,語法很簡單:tskill 程序名!! 補充一把,ntsd可以直接指定工作名的,把倒數第二個參數改為 -pn 即可 如: ntsd -c q -pn xxx.exe 有種殺工作的外部指令好像叫spkill 可以到網上下載 q: 以前都是用unix的,習慣console了 windows下的還真不知道,學習,謝謝 順便問一下,如果是遠端終端用戶,如果在指令行將遠端終端用戶中斷連線或登出? A: tsdiscon.exe ---------------------------------------- Disconnects a terminal session. TSDISCON [sessionid | sessionname] [/SERVER:servername] [/V] sessionid The ID of the session. sessionname The name of the session. /SERVER:servername Specifies the Terminal server (default is current). /V Displays information about the actions performed. Q: TASKKILL指令真不錯,可以在遠端TELNET裡面使用,但是只有XP才好用,有沒有在win2k下面可以遠端TELNET使用的類似指令啊? 自動廣播程序可以本身自己結束自己嗎,用個timer監視系統時間就能知道早晨到了 A: 做公共廣播系統的不少,但是軟體大都都是抄襲來的,抑或就是自己開發的半成品。 在低價劣質面前還能說什麼呢。 |
送花文章: 3,
|