AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Aktion mit anderen User rechten ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Aktion mit anderen User rechten ausführen

Ein Thema von renekr · begonnen am 14. Apr 2006 · letzter Beitrag vom 17. Apr 2006
Antwort Antwort
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

Aktion mit anderen User rechten ausführen

  Alt 14. Apr 2006, 10:27
Hallo,
folgendes Thema:
Ich bin eingeloggt als User und habe den Lokale Admin und Passwort.


CreateProcessasuser geht nicht weil ich keinen anderen Process machen will.


ImpersonateLoggedOnUser???

Hat da schon mal jemand damit gearbeitet?

PS: Ich will nicht einen anderen Prozess mit anderen Rechten starten,alles soll im Programm drin sein nur mit anderen Security Rechten.
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Aktion mit anderen User rechten ausführen

  Alt 14. Apr 2006, 10:30
Zitat von renekr:
ImpersonateLoggedOnUser???
Entwerder das oder MSDN-Library durchsuchenImpersonateSelf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#3

Re: Aktion mit anderen User rechten ausführen

  Alt 14. Apr 2006, 11:12
Zitat von renekr:
ImpersonateLoggedOnUser???

Hat da schon mal jemand damit gearbeitet?

PS: Ich will nicht einen anderen Prozess mit anderen Rechten starten,alles soll im Programm drin sein nur mit anderen Security Rechten.
mit Hilfe der APIs LogonUser/ImpersonateLoggedOnUser und RevertToSelf lasse ich einzelne Threads eines Server-Dienstes im Kontext eines anderen Users (!= SYSTEM) laufen; in meinem Fall, damit sie auf Network-Shares zugreifen können...
bei älteren Windows-Versionen hat es Probleme bezüglich des benötigten SE_TCB_NAME-Privileg gegeben (nur Dienste haben dieses Privileg) - unterdessen müsste dies jedoch auch in "normalen" Prozessen funktionieren, sofern der anzumeldende User ein Administrator ist (so verstehe ich den Text bei MSDN)...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Aktion mit anderen User rechten ausführen

  Alt 14. Apr 2006, 11:14
Delphi-Quellcode:
const
  USER = 'Hansbambel';
  PW = 'geheim';

function GetCurrUserName: string;
var
  Size : DWORD;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(Result, Size);
  if GetUserName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';
end;

function Impersonate(const User, PW: string): Boolean;
var
  LogonType : Integer;
  LogonProvider : Integer;
  TokenHandle : THandle;
  strAdminUser : string;
  strAdminDomain : string;
  strAdminPassword : string;
begin
  LogonType := LOGON32_LOGON_INTERACTIVE;
  LogonProvider := LOGON32_PROVIDER_DEFAULT;
  strAdminUser := USER;
  strAdminDomain := '';
  strAdminPassword := PW;
  Result := LogonUser(PChar(strAdminUser), nil,
    PChar(strAdminPassword), LogonType, LogonProvider, TokenHandle);
  if Result then
  begin
    Result := ImpersonateLoggedOnUser(TokenHandle);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Impersonate(USER, PW) then
  begin
    ShowMessage(GetCurrUserName);
    RevertToSelf;
    ShowMessage(GetCurrUserName);
  end
  else
    MessageBox(0, PChar(SysErrorMessage(GetLastError)), '', 0);
end;
Zur Kontrolle gebe ich den Benutzernamen aus. Funktioniert unter Windows XP SP2 mit eingeschränkten Benutzerrechten. Unter Windows 2000 dürfte es, wie Basilikum schon bemerkt hat, Probleme mit den Privilegien geben, da dort das Privileg SE_TCB_NAME erforderlich ist, welches in der Regel nur Dienste Besitzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Aktion mit anderen User rechten ausführen

  Alt 14. Apr 2006, 19:01
Hi,
vielen Dank euch zwei.
werde es gleich mal testen.

Gibt es dann ne möglichkeit für W2K oder ist es generell nur ab XP möglich?

Danke.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Aktion mit anderen User rechten ausführen

  Alt 15. Apr 2006, 20:07
Hi,
weiß jemand ob man damit auch in einer Domäne arbeiten kann?

Also auf einem PC den Login von einem Domänen User nehmen,der in der Localen Admin Gruppe enthalten ist ?

@Luckie : Du hast mir ja schon mal geantwortet das deine MPUntuser nur Local gedacht ist.

Weiß jemand wie oder ob es sowas für die Arbeiten mit domänen Accounts gibt?

wäre euch dankbar.
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#7

Re: Aktion mit anderen User rechten ausführen

  Alt 15. Apr 2006, 22:11
Zitat von renekr:
Hi,
weiß jemand ob man damit auch in einer Domäne arbeiten kann?

Also auf einem PC den Login von einem Domänen User nehmen,der in der Localen Admin Gruppe enthalten ist ?

@Luckie : Du hast mir ja schon mal geantwortet das deine MPUntuser nur Local gedacht ist.

Weiß jemand wie oder ob es sowas für die Arbeiten mit domänen Accounts gibt?

wäre euch dankbar.
bei dem im obigen Post angesprochenen Server-Dienst werden Domain-User-Accounts verwendet - funktioniert problemlos... siehe 2. Parameter von LogonUser...
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Aktion mit anderen User rechten ausführen

  Alt 16. Apr 2006, 10:33
Hi,
Danke.

Ich glaube ich hatte Eier auf den Augen.
Oder es einfach überlesen das Domäne!!!

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Aktion mit anderen User rechten ausführen

  Alt 17. Apr 2006, 13:14
Ich habe auf meiner Homepage dazu noch mal etwas geschrieben: http://www.michael-puff.de/Developer...ersonate.shtml
Wichtig: In meinem obigen Code hat ein CloseHandle gefehlt und natürlich der Hinweis auf RevertToSelf!
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Aktion mit anderen User rechten ausführen

  Alt 17. Apr 2006, 20:03
Hi Luckie,

Vielen Dank.

Ich muss dir heir an dieser Stelle mal ein Lob aussprechen.
Ich habe schon sehr oft deine Arbeit in meinen Tools brauchen können und diese haben auch immer Super funktioniert.
Auch der nötige Support oder Kleine Denkanstöße waren immer da.


PS: Wie ist es eigentlich wenn ich zb einen PC der in einer Domäne ist ausserhalb der Domäne betreibe.
Dann melde ich mich Local an windows an aber an der Domäne ,weil zuvor schon ein Logon geschehen ist ( an der domäne ) sind die User Daten Temp. vorhanden .

Wenn ich nun Impersonate mache mit dem Domänen USer geht es nicht. Fehler Falscher User oder Passwort.:
Werde es morgen im Betrieb mal Testen wenn ich die domäne connected habe.


Danke.

  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 12:44 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