私はここでいくつかの助けが必要です。プロセスとタスクスキルのコマンドラインを取得
私は現在、しかし、それは動作していないので、同様にホワイトリスト(コマンドライン)にない任意のプロセスを強制終了しようとしています。:
上記のコマンドで私はここでいくつかの助けが必要です。プロセスとタスクスキルのコマンドラインを取得
私は現在、しかし、それは動作していないので、同様にホワイトリスト(コマンドライン)にない任意のプロセスを強制終了しようとしています。:
上記のコマンドでwmic path win32_process get CommandLine | findstr /i "%whitelist%"
@echo off
setlocal
set "whitelist=DcomLaunch RPCSS LocalServiceNetworkRestricted netsvcs LocalService LocalSystemNetworkRestricted NetworkService LocalServiceAndNoImpersonation taskhostex cmd dwm conhost services smss SearchIndexer Isass Explorer csrss conhost cftmon"
for /f "tokens=2 delims=," %%I in (
'wmic process get executablepath^,status /format:csv ^| find "\"'
) do (
set "proc=%%~I"
setlocal enabledelayedexpansion
set /p "=%%~I: "<NUL
wmic path win32_process get CommandLine | findstr /i "%whitelist%" >NUL && (
echo OK
) || (
echo UNACCEPTABLE!
taskkill /im "%%~nxI" /f
)
endlocal
)
、
findstr
はなり一致する場合は
wmic
となるので、
は常にです。例えば、少なくとも
cmd
は、
wmic
が
cmd
ウィンドウで実行されるため一致します。次に
がコメントコードスニペットが機能するはずですが、昇格された場合(管理者として実行)異なる結果が得られます。
set "whitelist=DcomLaunch RPCSS LocalServiceNetworkRestricted netsvcs LocalService LocalSystemNetworkRestricted NetworkService LocalServiceAndNoImpersonation taskhostex cmd dwm conhost services smss SearchIndexer Isass Explorer csrss conhost cftmon"
rem add windows VITAL processes !!! incomplete !!!
set "whitelist=svchost ctfmon lsass winlogon %whitelist%"
for /f "tokens=2,3 delims=," %%I in (
'wmic process get executablepath^,ProcessID^,status^,WindowsVersion /format:csv ^| find "\"'
) do (
set "proc=%%~I"
set "procID=%%~J"
setlocal enabledelayedexpansion
rem debugging: set /p "=%%~I: "<NUL
rem debug try: wmic path win32_process where "ProcessID=%%J" get Name 2>NUL | findstr /i "%whitelist%">NUL 2>&1 && (
rem debug try: wmic path win32_process get executablepath 2>NUL | findstr /i "!proc:/=//!">NUL 2>&1 && (
wmic path win32_process where "ProcessID=%%J" get CommandLine 2>NUL | findstr /i "%whitelist%">NUL 2>&1 && (
rem suppress "No Instance(s) Available" report in above line: 2>NUL
echo OK %%J "%%~I"
) || (
rem UNWANTED: here come inactive processes "cmd", "wmic", "find"
rem and maybe more ones that were active in FOR %%I execution time
rem (but loop continues); let's filter them here:
tasklist /FI "PID eq %%J" /NH | find "%%J" >NUL 2>&1 && (
echo NO %%J "%%~I"
rem taskkill /PID "%%~J" /f
) || (
echo XX %%J "%%~I"
rem inactive at the moment
)
)
endlocal
)
Essential Processes needed to run Windows(次のリストは、少し古くなっている可能性があり):
...ここにWindowsが正しく を実行するために必要な基本的なプロセスのリストです。
- システムアイドルプロセス
- explorer.exeの
- Taskmgr.exeのspoolsv.exeの
- LSASS.EXE
- のCsrss.exe
- SMSS.EXE
- Winlogonプロセス。 exe
- svchost.exe - (いくつかのこれらのプロセスのいずれかが シャットダウンされた場合ESE)
- これらのプロセス以外のものをシャットダウンすることでSERVICES.EXE
、スタンドアローン Windowsは細かい動作しなければならないが、しかし、Windowsが不安定になったり、使用できなくなることを開始します。
これは動作しないので、get CommandLineを使用する必要があります。これはsvchostでもNO
@JesseBropez申し訳ありません。あなたはあなたが望む物件を手に入れることができます。私は、ほとんどの 'svchost'を' OK
私は見る!助けてくれてありがとうJosefZ!私はいくつかの重要なプロセスを追加することを忘れてしまった。 – DropItLikeItsHot
wmicコマンドラインに「get」はありません。 –
@Noodlesありがとう!それを逃した。ただし、ホワイトリストに登録されていない場合でも、すべてのプロセスは「OK」と表示されます。 – DropItLikeItsHot