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:
+12
-4
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user