![]() |
Vista: CreateProcess mit Admin-Rechten
Hi,
wie kann ich mittels CreateProcess unter Vista eine Anwendung mit Admin-Rechten starten? Die Manifest Lösung scheidet für mich aus, da ich nur dann den zweiten Prozess mit Admin Rechten starten will, wenn der erste Prozess mit Admin Rechten läuft. Florian |
Re: Vista: CreateProcess mit Admin-Rechten
Zitat:
Zitat:
Mike |
Re: Vista: CreateProcess mit Admin-Rechten
Leider kann ich das nicht bestätigen. Also ich habe ide UAC deaktiviert und starte meinen Prozess, der auch alle Admin Rechte hat. Dann rufe ich in diesem CreateProcess auf und erzeuge einen weiteren Prozess. Dieser zweite Prozess allerdings läuft mit eingeschränkten Rechten .. kann man da was machen?
//Edit: Ja bin selbst drauf gekommen .. so geht es:
Delphi-Quellcode:
var
hToken: Cardinal; {...} OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hToken); CreateProcessAsUser(hToken, nil, PChar('"' + Process + '"'), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo); |
Re: Vista: CreateProcess mit Admin-Rechten
Ah verdammt .. Fehlanzeige .. ich hatte ausversehen nur CreateProcess geschrieben. Es geht nicht so .. das habe ich noch gefunden, bekomme es aber nicht so ganz portiert:
Code:
Kann mir da jemand helfen?
CHandle processToken;
VERIFY(::OpenProcessToken(::GetCurrentProcess(), TOKEN_DUPLICATE, &processToken.m_h)); CHandle duplicateToken; VERIFY(::DuplicateTokenEx(processToken, MAXIMUM_ALLOWED, 0, // token attributes SecurityAnonymous, TokenPrimary, &duplicateToken.m_h)); WellKnownSid integrityLevelSid(WellKnownSid::MandatoryLabelAuthority, SECURITY_MANDATORY_LOW_RID); TOKEN_MANDATORY_LABEL tokenIntegrityLevel = { 0 }; tokenIntegrityLevel.Label.Attributes = SE_GROUP_INTEGRITY; tokenIntegrityLevel.Label.Sid = &integrityLevelSid; VERIFY(::SetTokenInformation(duplicateToken, TokenIntegrityLevel, &tokenIntegrityLevel, sizeof (TOKEN_MANDATORY_LABEL) + ::GetLengthSid(&integrityLevelSid))); STARTUPINFO startupInfo = { sizeof (STARTUPINFO) }; ProcessInfo processInfo; VERIFY(::CreateProcessAsUser(duplicateToken, L"C:\\Windows\\Notepad.exe", 0, // cmd line 0, // process attributes 0, // thread attributes FALSE, // don't inherit handles 0, // flags 0, // inherit environment 0, // inherit current directory &startupInfo, &processInfo)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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-2025 by Thomas Breitkreuz