Hallo miteinander,
ich bin auf ein seltsames problem gestossen was mich ein wenig aus der Bahn wirft.
Referenz:
stackoverflow
Code:
Delphi-Quellcode:
function GetUserAndDomainFromPID(ProcessId: DWORD;
var User, Domain: string): Boolean;
var
hToken: THandle;
cbBuf: Cardinal;
ptiUser: PTOKEN_USER;
snu: SID_NAME_USE;
ProcessHandle: THandle;
UserSize, DomainSize: DWORD;
bSuccess: Boolean;
begin
Result := False;
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId);
if ProcessHandle <> 0 then
begin
// EnableProcessPrivilege(ProcessHandle, 'SeSecurityPrivilege', True);
if OpenProcessToken(ProcessHandle, TOKEN_QUERY, hToken) then
begin
bSuccess := GetTokenInformation(hToken, TokenUser, nil, 0, cbBuf);
ptiUser := nil;
while (not bSuccess) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) do
begin
ReallocMem(ptiUser, cbBuf);
bSuccess := GetTokenInformation(hToken, TokenUser, ptiUser, cbBuf, cbBuf);
end;
CloseHandle(hToken);
if not bSuccess then
begin
Exit;
end;
UserSize := 0;
DomainSize := 0;
LookupAccountSid(nil, ptiUser.User.Sid, nil, UserSize, nil, DomainSize, snu);
if (UserSize <> 0) and (DomainSize <> 0) then
begin
SetLength(User, UserSize);
SetLength(Domain, DomainSize);
if LookupAccountSid(nil, ptiUser.User.Sid, PChar(User), UserSize,
PChar(Domain), DomainSize, snu) then
begin
Result := True;
User := StrPas(PChar(User));
Domain := StrPas(PChar(Domain));
end;
end;
if bSuccess then
begin
FreeMem(ptiUser);
end;
end;
CloseHandle(ProcessHandle);
end;
end;
Bei der oben gezeigten Methode wirft mir nt.dll dauernd einen Fehler (Schreibfehler) wenn das Projekt auf "Release" steht, wenn ich nun debugge um herauszufinden an welcher stelle der Fehler produziert wird, was soll ich sagen, da klappt alles so wie es sein sollte.
Nun meine Frage, wie bekomme ich es zum laufen ohne entweder zu debuggen oder einen Debug-Release zu erschaffen, hat da jemand eine Idee?
Ps: Ich möchte mit dieser Funktion sicherstellen das meine Applikation nur einmal pro Login-Account gestartet werden kann bzw. auch gut für einen Prozess-Lister
Grüße!