[ad_1]
プロセスが子を生成するのを防ぎ、そのアクセス許可を取り消す効果的な方法はありますか? プロセスがサブプロセスを生成する機能を完全にブロックし、可能であればそのアクセス許可を制限して、その子とともにプロセスを終了する堅牢なアプローチを探しています。 この目的のために効果的と思われる提案や戦略はありますか?
私が試したこと:
import psutil import sys import ctypes import time< def is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except Exception as e: print(f'Error checking admin privileges: {e}') return False def run_as_admin(): try: ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) except Exception as e: print(f'Error restarting as administrator: {e}') sys.exit(1) def block_child_creation(process_name): try: for process in psutil.process_iter(['pid', 'name']): if process.info['name'].lower() == process_name.lower(): # Suspend the process process.suspend() print(f'The process with PID {process.pid} has been suspended.') # Terminate the process and its children for child in process.children(recursive=True): child.kill() psutil.wait_procs(process.children(), timeout=5) process.kill() process.wait(5) print(f'The process with PID {process.pid} and its children have been terminated.') break # No need to continue searching after blocking the process # Verificar novamente se o processo foi encerrado for process in psutil.process_iter(['pid', 'name']): if process.info['name'].lower() == process_name.lower(): print(f'The process {process_name} is still running.') else: print(f'No process with the name {process_name}.') break except psutil.NoSuchProcess: print(f'No process with the name {process_name} found.') except Exception as e: print(f'An unexpected error occurred: {e}') def main(): try: if not is_admin(): print("Restarting as administrator!") run_as_admin() global nome_processo nome_processo = input("Enter the name of the process you want to block and terminate with child creation: ") block_child_creation(nome_processo) except KeyboardInterrupt: print("\nTermination process interrupted by the user.") except Exception as e: print(f'An unexpected error occurred: {e}') if __name__ == "__main__": main()
解決策 1
答えではなくアイデア
プロセスの作成をブロックするには、そのすべてのサブプロセスを繰り返し強制終了してみてください。
注: ユーザーのコンピュータに bsod (死のブルースクリーン) が表示されないように遅延を追加します。
それが機能しない場合、またはまだいくつかのプロセス/サブプロセスを残しておきたい場合は、次を試してください。
何かを調べようとしています。この回答が完了するまで待ってください。または、おそらく何か…
[ad_2]
コメント