ich werd noch verrückt.
Sobald ich ImpersonateLoggedOnUser aufgerufen habe - was kann ich dann alles machen?
Sagen wir mit LogonUserW habe ich davor den Administrator eingeloggt.
Jetzt könnte ich doch mit CreateProcess usw die Verwaltung (über Explorer) als Administrator starten. Aber das funktioniert nicht.
Ich habe nicht genug Rechte, wenn ich z.b. Computername ändern will.
Delphi-Quellcode:
if LogonUserW(PWideChar(LoginData.UserName),
// UserName
PWideChar(LoginData.DomainName),
// Domäne oder lokaler Rechner
PWideChar(LoginData.Password),
// Password
{<LOGON32_LOGON_BATCH or LOGON32_LOGON_NETWORK or LOGON32_LOGON_INTERACTIVE>}LoginData.LogonType,
{<LOGON32_PROVIDER_DEFAULT>,} LoginData.LogonProvider,
AdminToken)
then begin
if ImpersonateLoggedOnUser(AdminToken)
if not CreateProcessAsUser(
AdminToken,
// client's access token
'
c:\windows\system32\cmd.exe',
// file to execute
nil,
nil,
nil,true,0,
nil,
nil,lpStartupInfo,lpProcessInformation)
then
ShowMEssage(SysErrorMessage(GetLastError))
->> Der Client besitzt ein erforderliches Recht nicht.
Muss ich da irgendwas machen?
Ich dachte nach ImpersonateLoggedOnUser, hat der Prozess (MainThread) alle Rechte des Benutzers ( hier Admin) ???
was mache ich falsch?
ich hab das Beispiel verwendet:
http://msdn.microsoft.com/library/de...ess_in_c__.asp
[edit=SirThornberry]Delphi-Tags gesetzt. Mfg, SirThornberry[/edit]