Hallo allerseits!
Ich möchte meine Anwendung mit gern mit Systemrechten starten, oder diese Erlangen, undzwar ohne einen Dienst. Im Forum hab ich diesen Code gefunden.
Delphi-Quellcode:
function EnablePrivilege(
const Privilege:
string; fEnable: Boolean;
out PreviousState: Boolean): DWORD;
var
Token : THandle;
NewState : TTokenPrivileges;
Luid : TLargeInteger;
PrevState : TTokenPrivileges;
Return : DWORD;
begin
SetLastError(0);
// Clear last system error state
PreviousState := True;
if (GetVersion() > $80000000)
then // Win9x
Result := ERROR_SUCCESS
else // WinNT
begin
if OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token)
then
begin
try
if LookupPrivilegeValue(
nil, PChar(Privilege), Luid)
then
begin
NewState.PrivilegeCount := 1;
NewState.Privileges[0].Luid := Luid;
if fEnable
then
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
NewState.Privileges[0].Attributes := 0;
if AdjustTokenPrivileges(Token, False, NewState, SizeOf(TTokenPrivileges), PrevState, Return)
then
begin
PreviousState := (PrevState.Privileges[0].Attributes
and SE_PRIVILEGE_ENABLED <> 0);
end;
end;
finally
CloseHandle(Token);
end;
end;
Result := GetLastError;
end;
end;
Nun hab ich da mal ein paar Überlegungen und Fragen zu, berichtigt mich bitte wenn ich falsch liege.
1. Da mein Programm eh immer mit Adminrechten gestartet wird, besitzt mein Programm auch die Rechte seine Privilegien zu ändern?
und..
2. Hatt jemand soetwas wie eine Parameterliste für diese Funktion? Ich meine was muss ich in der String Const "Privilege" an diese Funktion übergeben?
z.B. für...
Systemrechte -> ?
Adminrechte -> ?
Benutzterrechte ->?
usw.
Vielleicht kann der Dezipaitor da helfen?
mfG Richard