Atualmente, estou trabalhando em um script que faz todos os meus hacks no meu sistema operacional Windows 10 20H2 em uma execução.
Estou usando o PowerShell 7.0.4 x64, quero executar o script em Admin pwsh
, encontrei algumas chaves de registro que exigem que os privilégios do TrustedInstaller sejam alterados, encontrei uma solução: usando psexec -S
para iniciar um pwsh
processo para executar os comandos com TrustedInstaller
privilégios, infelizmente eu não sei como passar variáveis para novos processos e fazer com que ele saia automaticamente psexec
para continuar a execução do script.
Vou usar isso como exemplo:
$TiSvc=@(
"PrintWorkflowUserSvc"
"RmSvc"
"SCardSvr"
"SecurityHealthService"
"Sense"
"SgrmBroker"
"wscsvc"
)
$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}
Sem TrustedInstaller
privilégio, o comando falhará com erro de acesso negado.
Agora, para resolver isso, use psexec
para executar o comando (coloquei a SysInternals
pasta em path
):
$PwSh=(Get-Process -Id $pid).path
PsExec -S $PwSh ???
Quero definir a [array]
variável $TiSvc
na sessão atual, não sei como passar $TiSvc
para a nova pwsh
sessão e executar este comando:
$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}
E depois que o comando for executado, saia da nova pwsh
sessão e saia psexec
para continuar a execução do script;
Como eu posso fazer isso? Qualquer ajuda é apreciada.
Coloque os comandos que você deseja executar como
TrustedInstaller
em um arquivo de texto no mesmo caminho do arquivo de script, certifique-se de quePsExec.exe
esteja noPath
, e use estes comandos:Para executar os comandos que precisam do privilégio TrustedInstaller em outro
PowerShell
processo, o processo será encerrado automaticamente após a conclusão da execução, permitindo que a execução do script principal continue.Corrigido um pequeno erro que fazia com que o processo do PowerShell fosse iniciado sem o privilégio TrustedInstaller.
O método acima de alguma forma não funcionou corretamente, como quando tentei executar estes comandos:
Eu recebi o erro:
Se eu usar
reg add
No entanto, os comandos antes deles retornaram:
Especificamente estes comandos:
Quando executado como Administrador e não TrustedInstaller, cada um retornará este erro:
Ao executar usando
PsExec
, esse erro não será gerado.Mas este erro:
Ainda será gerado.
Eu acho que isso é porque
PsExec
depende de coisas remotas e eu desativei "Assistência Remota", "Área de Trabalho Remota" e "Registro Remoto";Eu usei
NSudoLC.exe
e desabilitou com sucesso o Windows Defender sem erros:Ao usar
NSudo
ambos os erros mencionados acima não são gerados.