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

)