AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi NetApi-Funktionen als beliebiger User Ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

NetApi-Funktionen als beliebiger User Ausführen

Ein Thema von Icydragon · begonnen am 22. Jul 2005 · letzter Beitrag vom 4. Aug 2005
Antwort Antwort
Icydragon

Registriert seit: 29. Jun 2005
4 Beiträge
 
Delphi 2005 Personal
 
#1

NetApi-Funktionen als beliebiger User Ausführen

  Alt 22. Jul 2005, 11:25
Hallo Leute,

habe folgendes Problem:

Ich möchte via NetApi-Funktionen Informationen über Netzwerkgruppen, Gruppenmitglieder usw. Herausfinden. Bei einigen Funktionen muss man schon Domänen-Admin oder Sicherungs-Op sein, wenn man sie erfolgreich ausführen will. Ich bekomme also, sollte ich nur lokaler Admin oder Trusted User in der Domäne sein, das Flag ERROR_ACCESS_DENIED zurück.
Wie kann ich diese Funktion in einem solchen Fall unter einem anderen Benutzer ausführen?

will es also ungefähr so verwenden:

Delphi-Quellcode:
{...funktion wurde aufgerufen}
if dwResult=ERROR_ACCESS_DENIED then
  begin
    //hier soll jetzt ein eingabeformular mit Benutzername und Passwort erscheinen
    //Die Eingabe soll nur mit dem nächsten Aufruf verwendet werden, danach wieder
    //freigegeben
  end;
{...Funktion wird erneut aufgerufen}

LogonUser klappt nicht, weil das nur lokal funktioniert.

Danke schon mal im Vorraus für alle Antworten
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: NetApi-Funktionen als beliebiger User Ausführen

  Alt 4. Aug 2005, 18:26
Zitat von Icydragon:
Bei einigen Funktionen muss man schon Domänen-Admin oder Sicherungs-Op sein, wenn man sie erfolgreich ausführen will.
Das ist korrekt und entspricht dem Sicherheitsmodell von Windows.

Zitat von Icydragon:
Wie kann ich diese Funktion in einem solchen Fall unter einem anderen Benutzer ausführen?
Das Problem dabei ist, daß, wie du schon selber feststellst MSDN-Library durchsuchenLogonUser() das Privileg SE_TCB_NAME haben muß. TCB steht für Trusted Computing Base und schließt im Prinzip nur das System selber ein. Ein Admin kann dieses Privileg aber ebenfalls ergattern. Das Token welches du aus dem Aufruf von LogonUser() bekommst, kannst du dann verwenden um einen Thread deines Prozesses als dieser Nutzer (also mit dessen Rechten) laufen zu lassen. Dementsprechend kann innerhalb eines Prozesses auch mehrere Threads mit jeweils verschiedenen Nutzerkontexten Aufgaben machen lassen, die sonst nicht möglich wären.

Das was du machen willst, schreit förmlich nach Delegation an einen Dienst. Dieser Dienst würde dann für dich alles übernehmen was mit Logons zu tun hat. Eine Alternative könnte ab W2K die Funktion MSDN-Library durchsuchenCreateProcessWithLogonW() bieten, die ohne besagtes Privileg auskommt. Allerdings müßtest du auch in diesem Fall zwischen den beiden Prozessen kommunizieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz