chore(release): v0.7.9

Corrige la SDDL invalide (erreur 1804) produite par le fix précédent
quand le service porte une clause S: (SACL/étiquette d'intégrité), et
les accents corrompus dans les messages d'erreur Windows (mauvais
codepage/encodage lors de la capture de sortie).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 17:04:34 +02:00
co-authored by Claude Sonnet 5
parent 73c102cc35
commit 21510d13f7
7 changed files with 48 additions and 14 deletions
+12 -4
View File
@@ -1927,15 +1927,23 @@ if (-not $currentSddl) {
}
$currentSddl = $currentSddl.Trim()
# Ajouter l'utilisateur actuel avec les permissions nécessaires, à
# l'intérieur de la clause D: existante (jamais en concaténant deux
# préfixes "D:" distincts, ce qui produit une SDDL invalide) :
# Insérer l'ACE de l'utilisateur actuel à l'intérieur de la clause D:
# existante, jamais en l'ajoutant après toute la chaîne : la SDDL d'un
# service porte souvent aussi une clause S: (SACL — étiquette d'intégrité
# obligatoire notamment, ex. "S:(ML;;NW;;;LW)"). Un simple "+" à la fin
# insérait alors l'ACE *après* le S:, produisant une SDDL syntaxiquement
# invalide (erreur 1804, ConvertStringSecurityDescriptorToSecurityDescriptor)
# — d'où l'échec systématique constaté malgré une lecture correcte de la
# SDDL actuelle.
# CC = Create Child (créer des services enfants)
# LC = List Child (lister les services enfants)
# SW = Self Write (modifier ses propres services)
# LO = List Object (lister)
# CR = Control (contrôle)
$fullSddl = $currentSddl + "(A;;CCLCSWLOCRRC;;;$currentUserSid)"
if ($currentSddl -notmatch '^(D:[A-Z]*)((?:\([^)]*\))*)(S:.*)?$') {
throw "Format de SDDL inattendu pour '$serviceName' : $currentSddl"
}
$fullSddl = $matches[1] + $matches[2] + "(A;;CCLCSWLOCRRC;;;$currentUserSid)" + $matches[3]
$setOutput = & sc.exe sdset $serviceName $fullSddl
if ($LASTEXITCODE -ne 0) {