Giampaolo Rodola' wrote:
> Roger Upole wrote:
>> I think you're looking for win32security.ImpersonateAnonymousToken.
>> Note that Anonymous is not the same thing as the Guest account.
>
> By reading MSDN it seems it should be used with threads (while I'm in
> an asynchronous environment) and I'm not even sure that's what I need.
> Could you provide an example code?
Well you've still *got* a thread, even if you're not spawning
any more to handle multithreading. Hopefully the code below
illustrates what's going on. Obviously you'll have to to adapt
to your circumstances.
TJG
<code>
import win32api
import win32security
import ntsecuritycon
ANONYMOUS_SID = win32security.CreateWellKnownSid (
win32security.WinAnonymousSid
)
if __name__ == '__main__':
flags = ntsecuritycon.MAXIMUM_ALLOWED
#
# At the start, this thread probably doesn't have
# its own token (unless it's impersonating already)
#
try:
hToken = win32security.OpenThreadToken (
win32api.GetCurrentThread (), flags, True
)
except win32security.error, (errno, errcontext, errmsg):
if errno == 1008:
hToken = win32security.OpenProcessToken (
win32api.GetCurrentProcess (), flags
)
else:
raise
#
# Just for show, indicate who owns the token before impersonation
#
sid, attr = win32security.GetTokenInformation (
hToken,
win32security.TokenUser
)
print "BEFORE: Token is for", sid
#
# Impersonate the anonymous user and show that the
# resulting token owner is the anonymous sid
#
win32security.ImpersonateAnonymousToken (win32api.GetCurrentThread ())
hToken = win32security.OpenThreadToken (
win32api.GetCurrentThread (), flags, True
)
sid, attr = win32security.GetTokenInformation (
hToken, win32security.TokenUser
)
if sid == ANONYMOUS_SID:
print "AFTER: Token is now Anonymous:", sid
else:
print "AFTER: Token is", sid
</code>
_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32