Hi,
ich habe mir den Vortrag auf den NI Days auch angehört.
Vieles kam mir bekannt vor, weil ich da selber schon mal dran war. Es war damals schon aufwändig alles rauszufinden, aber der eigentliche Code war nicht so komplex. Kam mir dann nicht soooo schwer vor.
Der größte Nachteil war, dass man die User-Info für den "höherwertigen" Account hart im Code hinterlegen muss. Man sollte den also nicht einfach so auf dem Rechner belassen, wenn man es ernst meint.
Hier ist mein damaliger Thread:
https://www.labviewforum.de/Thread-UserI...#pid172775
Und hier gibts weitere allgemeine Info:
https://docs.microsoft.com/de-de/windows...dfrom=MSDN
Ich weiß allerdings nicht, ob das unter Win10 noch so funktioniert...nie getestet.
1. RevertToSelf: Eventuell alte Freigaben aufheben
2. LogonUserA: Authentifizierung, es wird ein "Impersonation Token" erzeugt
3. ImpersonateLoggedOnUser: Das Betriebssystem wird veranlasst, alle folgenden Aktionen im Kontext des zuvor authentifizieren Users durchzuführen. Die (eingeschränkten) Rechte des eigentlichen Users werden übergangen.
4. Schreiben oder Lesen
5. CloseHandle: Impersonation Token wieder schließen
6. RevertToSelf: Freigaben wieder wegnehmen und den Prozess zurück an den eigentlichen User geben
Wichtig:
Der Lese- oder Schreibvorgang nach dem "Impersonate" funktioniert nur,
wenn das aufrufende VI und das Schreib-/Lese-VI im gleichen Thread laufen,
weil die Rechtevergabe nur für diesen Thread gilt!
Um das gesamte aufrufende VI mit allen Inhalten (aka Sub-VIs) in den gleichen Thread zu zwingen,
muss über VI Properties >> Execution >> Preferred Execution System z.B. "user interface" ausgewählt werden!
Probieren geht über studieren!
A.