Indstilling af Windows XP registreringsnøgle tilladelser ved hjælp af Python

Indlæg af Hanne Mølgaard Plasc

Problem



En klient af mig slog en del af deres register. Af en eller anden grund har en masse undernøgler under HKEY\_CLASSES\_ROOT ingen tilladelser indstillet. Så jeg går igennem nøglerne og manuelt indstiller nøgler som sådan:



  1. Tilføj administratorer som en gruppe

  2. Angiv administratorer som ejer



Der er potentielt tusindvis af disse, der skal indstilles, og det er en 10-12 trinsproces at gøre for hver nøgle. Så jeg vil automatisere processen via Python. Er der et modul, der kan udføre begge disse?


Tak!

Bedste reference


Efter næsten en hel dag forskning er min løsning på at arbejde med Windows-registreringsdatabasen og tilladelser at bruge SetACL. Du kan bruge et COM-objekt eller bruge den binære fil og delprocessemodulet.
Her er et uddrag af hvad jeg brugte i min kode til at ændre tilladelserne i et blandet miljø (jeg har ~ 50 Windows-maskiner med 32bit og 64bit, med Windows 7 og Windows XP pro ...): [2]


from subprocess import Popen, PIPE

def Is64Windows():
    '''check if win64 bit'''
    return 'PROGRAMFILES(X86)' in os.environ

def ModifyPermissions():
    """do the actual key permission change using SetACL"""
    permissionCommand = r'SetACL.exe -on "HKLMSoftwareMPICHSMPD"'
    +' -ot reg -actn ace -ace "n:Users;p:full"'
    permissionsOut = Popen(permissionCommand, stdout = PIPE, stderr = PIPE)
    pout, perr = permissionsOut.communicate()
    if pout:
        print pout
        sys.exit(0)
    elif perr:
        print perr
        sys.exit(1)

def main():
    ... some code snipped ...

    os.chdir('SetACL')
    if Is64Windows():
        os.chdir('x64')
        ModifyPermissions()
    else:
        os.chdir('x86')
        ModifyPermissions()


Så det er ikke rigtig rent Python, men det virker.