You should be able to just adjust privs once, instead of doing it in each call 
for every file.

    Roger

"Joseph L. Casale" <jcas...@activenetwerx.com> wrote in message 
news:assp.006455fdda.50f65708cf40439eba7f2abd9c2d8...@exch.activenetwerx.com...
>I have a situation where I need to remove large directories and in doing so I 
>must take ownership.
> I get a stack trace about the logon I impersonate generating to many security 
> ids as I recursively
> iterate and take ownership.
>
> What workarounds have you guys utilized in this scenario?
>
> I suspect there is room for optimizing the approach I am using, where I pass 
> the sid of the new
> owner in to this function that leverages the unc path in self.unc:
>
>    def owner_set(self, owner_sid):
>        new_privs = (
>            (win32security.LookupPrivilegeValue(
>                '', ntsecuritycon.SE_RESTORE_NAME),
>             win32con.SE_PRIVILEGE_ENABLED),
>            (win32security.LookupPrivilegeValue(
>                '', ntsecuritycon.SE_TAKE_OWNERSHIP_NAME),
>             win32con.SE_PRIVILEGE_ENABLED))
>
>        thread = win32api.GetCurrentThread()
>        handle = win32security.OpenThreadToken(
>            thread, win32security.TOKEN_ALL_ACCESS
>            | win32con.TOKEN_ADJUST_PRIVILEGES
>            | win32con.TOKEN_IMPERSONATE, False)
>        win32security.AdjustTokenPrivileges(handle, 0, new_privs)
>
>        fs = win32security.GetFileSecurity(
>            self.unc, win32security.OWNER_SECURITY_INFORMATION)
>        fs.SetSecurityDescriptorOwner(owner_sid, True)
>
>        win32security.SetFileSecurity(
>            self.unc, win32security.OWNER_SECURITY_INFORMATION, fs)
>
> Thanks,
> jlc 



_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to