ImpersonateLoggedOnUser



  • Mal ne blöde Frage: wenn ich mir mit LogonUser(...LOGON32_LOGON_NEW_CREDENTIALS...) ein Token hole um die Credentials für Netzwerkzugriffe zu ändern, und das dann mit ImpersonateLoggedOnUser scharf mache, wie kann ich das dann wieder rückgängig machen, so dass nachher alles wieder genau so ist wie vorher?

    Ich meine nicht RevertToSelf, denn wenn wenn vorher schon ein Programmteil ImpersonateLoggedOnUser verwendet hat würde RevertToSelf nicht den Zustand nach dem 1. ImpersonateLoggedOnUser Aufruf wiederherstellen.

    Oder andersrum gefragt: wie implementiert man eine "OpenFileWithCredentials" Funktion die möglichst keine Seiteneffekte hat (ausser natürlich dass das File geöffnet wird 😉 )?


  • Mod

    Das ist korrekt RevertoToSelf bringt den eigenen Token wieder in den Kontext.

    Hast Du Dir SetThreadToken schon mal angesehen. Ich selbst habe noch nicht damit gearbeitet. Da aber ImpersonateLoggedOnUser den ganzen Prozess betrifft, hätte es ziemlich viele Seiteneffekte für eine Routine 🙂

    Hier eine Übersicht, und mehr gibt es da sowieso nicht.
    http://msdn2.microsoft.com/en-us/library/aa376391(VS.85).aspx



  • Martin Richter schrieb:

    Da aber ImpersonateLoggedOnUser den ganzen Prozess betrifft, hätte es ziemlich viele Seiteneffekte für eine Routine 🙂

    AAAAAH, *Panik*
    Moment...

    MSDN schrieb:

    The ImpersonateLoggedOnUser function lets the calling thread impersonate the security context of a logged-on user. The user is represented by a token handle.

    Phui, ... hatte schon Angst.


  • Mod

    Da habe ich aber danebengegriffen. Sorry!



  • push


Anmelden zum Antworten