![]() |
ProcessList stürzt ab nach kurzer zeit 64Bit
Delphi-Quellcode:
Weis jemand warum ?
procedure TProcess.GetUserInformation;
type PTokenUser = ^TTokenUser; TTokenUser = record User: TSIDAndAttributes; end; const PROCESS_QUERY_LIMITED_INFORMATION = $1000; var vHandle: THandle; vToken: THandle; vUserName: array [0 .. 255] of char; vDomainName: array [0 .. 255] of char; vUserNameSize: DWORD; vDomainNameSize: DWORD; vTokenUser: PTokenUser; vInfoSize: Cardinal; vUse: SID_NAME_USE; begin FUser := ''; FDomain := ''; vHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, FID); if vHandle > 0 then try if OpenProcessToken(vHandle, TOKEN_QUERY, vToken) then try GetTokenInformation(vToken, TokenUser, nil, 0, vInfoSize); vUserNameSize := SizeOf(vUserName); vDomainNameSize := SizeOf(vDomainName); vUse := SidTypeUser; GetMem(vTokenUser, vInfoSize); try if not GetTokenInformation(vToken, TokenUser, vTokenUser, vInfoSize, vInfoSize) then raise ESystemError.Create; LookupAccountSid(nil, vTokenUser.User.Sid, @vUserName, vUserNameSize, @vDomainName, vDomainNameSize, vUse); FUser := vUserName; FDomain := vDomainName; // << Hier stürzt die Anwendung ab nur unter 64Bit. finally FreeMem(vTokenUser); end; finally CloseHandle(vToken); end; finally CloseHandle(vHandle); end; end; gruss |
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Sollte es nicht WideString sein als deine vUserName & vDomainName ?
Delphi-Quellcode:
function GetNameFromSid(ASID: String): String;
var lSidLen: DWORD; lSid: PSID; lName, lDomain: WideString; begin lSidLen := SECURITY_MAX_SID_SIZE; lSid := AllocMem(lSidLen); try StringToSID(ASID, lSid, lSidLen); LookupAccountBySid(lSid, lName, lDomain); Result := lName; finally FreeMem(lSid); end; end; |
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Prüf den Rückgabewert von LookupAccountSid und rufe GetLastError im Falle des Fehlschlagens. Vielleicht bringt dich das weiter.
@KodeZwerg: Er nutzt doch ein
Delphi-Quellcode:
, was auf einem Unicode-fähigen Delphi zu
array of char
Delphi-Quellcode:
wird. Statisches Array, daher auch ohne Speicherreservierung. Wichtig wäre aber noch, das Array zu nullen, bevor man damit arbeitet.
array of WideChar
Grüße Dalai |
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Zitat:
Das Problem tritt nur mit 64Bit auf. Hmmm... Zitat:
gruss |
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Zitat:
|
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
OK Danke aber ich habe es schon selbst auf meiner art gemacht ;)
Einfach ein try.. except und ein anschließendes
Delphi-Quellcode:
raise Exception.Create(SysErrorMessage(GetLastError));
gruss |
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Zitat:
|
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
|
AW: ProcessList stürzt ab nach kurzer zeit 64Bit
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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