Einzelnen Beitrag anzeigen

Benutzerbild von Rakshasa
Rakshasa

Registriert seit: 1. Nov 2003
182 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Startup-Spy XP 2003

  Alt 4. Jan 2004, 14:03
Hi!!

Erstma danke für das überwiegend positive Feedback, aber vor allem für die konstruktive Kritik!!

Das mit den vielen Messageboxes ist mir auch aufgefallen, die aktuelle Version (an der ich z.Zt. werkel)
wird gleich am Start fragen, ob die Infotexte angezeigt werden sollen, oder nicht.

@mirage228: Klar, kannst du!

@MathiasSimmack:

Wow, dass es sogar unter 98 läuft, hätte ich nicht gedacht *g*.
Prinzipiell möchte ich halt, dass notfalls StartupSpy auch unter Win9X benutzt werden kann, auch wenn ich es ofiziell nicht unterstütze. Wie gesagt, nur notfalls. Daher möchte ich keine komplette Sperrung einbauen.
Für die Admin-Prüfung verwende ich folgenden Code:
Code:
function IsUserAdmin: Boolean;
var
  hAccessToken: THandle;
  ptgGroups: PTokenGroups;
  dwInfoBufferSize: DWORD;
  psidAdministrators: PSID;
  x: Integer;
  bSuccess: BOOL;
begin
  Result  := False;
  bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
    hAccessToken);
  if not bSuccess then
  begin
    if GetLastError = ERROR_NO_TOKEN then
      bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
        hAccessToken);
  end;
  if bSuccess then
  begin
    GetMem(ptgGroups, 1024);
    bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
      ptgGroups, 1024, dwInfoBufferSize);
    CloseHandle(hAccessToken);
    if bSuccess then
    begin
      AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
        SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0, psidAdministrators);
      {$R-}
      for x := 0 to ptgGroups.GroupCount - 1 do
        if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
        begin
          Result := True;
          Break;
        end;
      {$R+}
      FreeSid(psidAdministrators);
    end;
    FreeMem(ptgGroups);
  end;
end;
Anscheinend nicht Win9X-kompatibel

Zu den Bugs:

- Der Optionen-Dialog kann mit voller Absicht verkleinert/vergrößert werden, da unter "Datenbanken" teilweise recht lange Pfadnamen angezeigt werden, die dann besser eingesehen werden können.

- Das mit der Meldung unter den ActiveX Bereich schaue ich mir mal an, danke!!

- Der Schlüssel "HKEY_CURRENT_USER\startupspy" bleibt tatsächlich zurück, in der aktuellen Version (3.22, noch nicht erschienen) habe ich diesen Bug behoben.


Ach ja, wegen dem Fehler/Absturz beim Anzeigen eines Prozesses.
Ist ein interessanter Fehler (wenn es der ist, den ich meine), den ich bisher nicht habe lösen können und nur bei manchen Systemen auftaucht. Prinzipiell kann er umgangen werden, wenn SS mit dem Parameter "/securebuffer" gestartet wird.

Das Problem ist folgende Function, dient zum Lesen der Breite (in Pixeln) eines Strings bei einer bestimmten Schriftart:

Code:

Function Tform1.GetTextWidth(text: String; aFont: TFont): Integer;
var
notUsed: HWND;
begin

try

With TCanvas.Create do begin
 Font.Assign(aFont);
 Handle := Form1.GetDeviceContext(notUsed);
 Result := TextWidth(Text);
 free;
end;

except Result := -1;
end;

end;
Wie gesagt, bei manchen Systemen führt der Aufruf dieser Function mit der Zeit zu komischen Verhalten, irgendwann stürzt SS mit dem Fehler "eOutofRessources" ab.

Ich hoffe, ich bekomme jetzt keinen Ärger, weil hier nicht der richtige Ort ist, solche Sachen zu diskuttieren )
  Mit Zitat antworten Zitat