Strategi untuk secara efektif memblokir pembuatan subproses proses dan mencabut izin (Python)

pemrograman


Apakah ada cara efektif untuk mencegah suatu proses memunculkan anak-anak dan mencabut izinnya? Saya mencari pendekatan yang kuat untuk sepenuhnya memblokir kemampuan proses untuk menghasilkan subproses dan, jika mungkin, membatasi izinnya dan menghentikannya bersama anak-anaknya. Apakah Anda mempunyai saran atau strategi yang efektif untuk tujuan ini?

Apa yang saya coba:

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()

Solusi 1

Ide tidak menjawab

mencoba memblokir suatu proses agar tidak dibuat, Anda dapat mencoba mematikan semua subprosesnya berulang kali.
catatan: tambahkan penundaan agar komputer pengguna tidak mengalami bsod (bluescreen of death).

jika itu tidak berhasil atau Anda masih ingin beberapa proses/subproses tersisa, coba:
Mencoba mencari tahu sesuatu, harap tunggu sampai jawaban ini selesai atau mungkin sesuatu…

コメント

タイトルとURLをコピーしました