INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

UserImpersonation / advapi32.dll



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

28.01.2015, 09:35
Beitrag #1

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
UserImpersonation / advapi32.dll
Hallo,

ich habe aktuell ein Problem, an dem ich mir die Zähne ausbeisse...Grrr

Folgende Problemstellung:

- Auf einem Rechner (am Netzwerk!) gibt es einen lokalen Order (C:\Outbox).
- Auf diesen Ordner kann nur der User "John.Connor" mit dem Passwort "HastaLaVista" zugreifen. Das kann man im Windows Explorer mit einem Rechtsklick auf den Ordner >> Eigenschaften >> Sicherheit >> Bearbeiten einstellen
- Die LabVIEW-Applikation auf diesem Rechner läuft in einem allgemeinen User-Kontext ("Labor" o. ä.), "John.Connor" ist also nicht am Rechner angemeldet
- Nun soll innerhalb der LV-Applikation mithilfe der advapi32.dll ein Zugriff auf den Ordner erfolgen, d.h. im Code sind Benutzername und Passwort von "John.Connor" fest hinterlegt.
- Über "LogonUser" und "ImpersonateLoggedOnUser" soll also im Hintergrund der Zugriff auf den gesperrten Ordner erfolgen, um da was reinzuschreiben.

Es gibt wohl zwei Möglichkeiten:
- LogonUser mit dem Parameter "LOGON32_LOGON_NETWORK", dann wird direkt ein "impersonation token" erzeugt, auf dass man mit "ImpersonateLoggedOnUser" zugreifen kann

-LogonUser mit dem Parameter "LOGON32_LOGON_NETWORK_CLEARTEXT", es wird ein "primary token" erzeugt. Dieses kann man mit "DuplicateToken" und dem "ImpersonationLevel" = "SecurityImpersonation" in ein "impersonation token" umwandeln um dann wieder "ImpersonateLoggedOnUser" aufzurufen

Ich habe das im angehängten VI vorbereitet. Beide Varianten funktionieren zwar, d.h. es kommt keine Fehlermeldunge etc., aber leider kann ich trotz erfolgreichem Logon keine Dateien schreiben (Error 8: File permission error), bzw. auch keine vorhandenen Files lesen (Error 7: File not found).

Seltsam: Nach dem erfolgreichen Logon + Impersonate kann ich mit "List Folder" den Inhalt des Ordners sehen, das funktioniert sonst nicht. Das kann man auch mit der Kommandozeile nachvollziehen.

Wenn man das ganz VI unmittelbar vor "Open File" (Breakpoint!) stoppt, und sich dann "manuell" die Rechte am Ordner "Outbox" holt und dann das VI weiterlaufen lässt, läuft das Schreiben ohne Fehler durch. Das Open File-VI interessiert sich also gar nicht für den Hintergrund-Logon, sondern "sieht" nur die Benutzerrechte des aktuell am Rechner angemeldeten Users. Ich habe in den zahlreichen Links (siehe unten) gelesen, dass die Rechte nach dem Logon für den aufrufenden Thread gelten...evtl. läuft das Open/Write/Close in einem anderen Thread?! Wie könnte man das ändern? Die cmd.exe läuft ja vermutlich auch in einem anderen Thread, das Verhalten ist ja ähnlich.

Im letzten der Links ist ein Beispiel (C++), da wird meiner Ansicht nach auch nichts anderes gemacht.

https://msdn.microsoft.com/en-us/library...85%29.aspx
https://msdn.microsoft.com/en-us/library...85%29.aspx
https://msdn.microsoft.com/en-us/library...85%29.aspx
https://msdn.microsoft.com/en-us/library...85%29.aspx
http://www.codeproject.com/Articles/2105...ersonation

Ideen?

Gruß
Achim

14.0 .vi  Logon_Test.vi (Größe: 38,6 KB / Downloads: 263)

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
UserImpersonation / advapi32.dll - Achim - 28.01.2015 09:35

Gehe zu: