![]() |
Aktion mit anderen User rechten ausführen
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. |
Re: Aktion mit anderen User rechten ausführen
|
Re: Aktion mit anderen User rechten ausführen
Zitat:
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)... |
Re: Aktion mit anderen User rechten ausführen
Delphi-Quellcode:
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.
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; |
Re: Aktion mit anderen User rechten ausführen
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. |
Re: Aktion mit anderen User rechten ausführen
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. |
Re: Aktion mit anderen User rechten ausführen
Zitat:
|
Re: Aktion mit anderen User rechten ausführen
Hi,
Danke. Ich glaube ich hatte Eier auf den Augen. Oder es einfach überlesen das Domäne!!! Vielen Dank. |
Re: Aktion mit anderen User rechten ausführen
Ich habe auf meiner Homepage dazu noch mal etwas geschrieben:
![]() Wichtig: In meinem obigen Code hat ein CloseHandle gefehlt und natürlich der Hinweis auf RevertToSelf! |
Re: Aktion mit anderen User rechten ausführen
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. :hello: :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz