Estou a construir um projeto e deparei-me com uma problema, eu quero verificar a assinatura digital de um executável que uma determinada tarefa agendada chama. Eu verifico a assinatura digital utilizando o módulo subprocess e uma função do powershell: def verificar_assinatura(caminho): if caminho in assinatura_cache: return assinatura_cache[caminho] try: comando = [ "powershell", "-Command", f"(Get-AuthenticodeSignature '{caminho}').StatusMessage" ] resultado = subprocess.run(comando, capture_output=True, text=True) status_message = resultado.stdout.strip() assinatura_cache[caminho] = status_message return status_message except (FileNotFoundError, OSError, subprocess.CalledProcessError) as erro: assinatura_cache[caminho] = f"Erro ao verificar assinatura {erro}" return assinatura_cache[caminho]). Mas deparei-me com um problema, certas tarefas agendadas chamas executáveis que contêm argumentos, outros que contêm variáveis de ambiente e por aí fora, a minha pergunta é como poderia tratar esses caminhos de maneira a puder passa-los como argumentos na minha função, e saber o real estado da assinatura. Aqui estão alguns exemplos de caminhos que não consigo tratar: %localappdata%\Microsoft\OneDrive\OneDriveStandaloneUpdater.exe /reporting; C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe /ua /installsource scheduler; C:\Users\George\AppData\Local\Programs\Opera\autoupdate\opera_autoupdate.exe --scheduledtask --productiscomponent --bypasslauncher --installdir="C:\Users\George\AppData\Local\Programs\Opera\assistant" --producttype=assistant $(Arg0); C:\Users\George\AppData\Local\Programs\Opera\autoupdate\opera_autoupdate.exe --scheduledtask --bypasslauncher $(Arg0); C:\Users\George\AppData\Local\Programs\Opera\autoupdate\opera_autoupdate.exe --scheduledtask --bypasslauncher $(Arg0); "C:\Users\George\AppData\Roaming\Zoom\bin\Zoom.exe" --action=UpdateSchedule; etc.. Continue reading...