Innanzitutto, affinché l'installazione e l'aggiornamento dell'agente funzionino quando è configurata una password di disinstallazione, non è necessario utilizzare il pacchetto msi (installazione OK, aggiornamento KO, viene richiesta la password di protezione dell'agente...).
È necessario creare dal server un pacchetto eseguibile di installazione che funzioni per l'installazione e gli aggiornamenti senza richiedere una password:
Il codice del pacchetto wapt adattato:
Codice: Seleziona tutto
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = ['{1841AFE1-4BA7-44D4-8700-6ACF860A8ED1}']
def install():
# Initializing variables
package_version = control.get_software_version()
# Vérification de la version pour gestion d'erreur
for to_install in installed_softwares('Trend Micro Apex One Security Agent'):
if Version(to_install["version"]) < Version(package_version) or force:
print ('installing %s' % control.package)
install_exe_if_needed('TrendMicroSecurityAgent.exe')
else:
print ('%s already installed' % control.package)
uninstallkey.remove('{1841AFE1-4BA7-44D4-8700-6ACF860A8ED1}')
Per la disinstallazione, suggerisco due soluzioni che ho testato:
Soluzione 1:
Disabilitando la password di disinstallazione dalla console del server, la chiave di registro "Consenti disinstallazione" verrà impostata su 1 sugli agenti. La disinstallazione è possibile con il seguente codice:
Codice: Seleziona tutto
def uninstall():
print ('uninstalling %s' % control.package)
run(r'"msiexec.exe" /x {1841AFE1-4BA7-44D4-8700-6ACF860A8ED1} /qn')
Soluzione 2:
La disinstallazione è possibile con il seguente codice senza disabilitare la password nella console di amministrazione (la password sarà in testo normale nel pacchetto):
Codice: Seleziona tutto
def uninstall():
print ('uninstalling %s' % control.package)
run(r'"%s\Trend Micro\Security Agent\pccntmon.exe" -m <uninstall_password>' % programfiles32)
fonte
Alcune piste che non hanno avuto successo:
La creazione del pacchetto eseguibile dal client del pacchetto si basa sul file di configurazione ofcscan.ini sul server; la modifica di questo file consente di trovare le opzioni di autoprotezione dell'agente:
[INI_CLIENT_SECTION]
SP_EnableFileProtection = 1
SP_EnableRegistryKeyProtection = 1
SP_EnableProcessProtection = 1
Sfortunatamente, impostarli su 0 non sembra funzionare...
Tuttavia, nel registro del seguente agente, si trovano effettivamente le chiavi per le opzioni di autoprotezione:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TrendMicro\PC-cillinNTCorp\CurrentVersion\AEGIS
Impostando la chiave "SP_EnableRegistryKeyProtection" su 0, la protezione del registro viene effettivamente disabilitata, quindi la chiave "Consenti disinstallazione" può essere modificata nuovamente dall'interno di un pacchetto WAPT senza disabilitare la password dell'agente. Il problema è che non è possibile modificare la chiave "SP_EnableRegistryKeyProtection" mentre l'agente è in esecuzione... Bisogna prima chiudere l'agente, che poi richiederà la password... in breve, non vedo come automatizzare completamente la disinstallazione all'interno di un pacchetto WAPT.