Avira erlaubt es seit heute (Virendef. 7.10.14.224, Guard 10.00.01.56) nicht mehr, dass Programme, die debugged werden, auf die Registry schreibend zugreifen. Und genau das macht z.B. Wininet.dll wenn man sie lädt, was durch "WebBrowser.Navigate('about
:blank');" geschieht.
Delphi-Quellcode:
program Test;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
var
Disposition: DWORD;
ResKey: HKEY;
Err: Integer;
begin
ResKey := 0;
try
Err := RegCreateKeyEx(HKEY_CURRENT_USER, '
SOFTWARE\Microsoftx\Windows\CurrentVersion\Internet Settings', 0,
nil, 0, KEY_READ
{or KEY_WRITE},
nil, ResKey, @Disposition);
if Err <> ERROR_SUCCESS
then
RaiseLastOSError(Err)
else
RegCloseKey(ResKey);
ReadLn;
if Disposition <> 0
then ;
except
on E:
Exception do
WriteLn(ErrOutput, '
Error: ', E.
Message);
end;
ReadLn;
end.
Und nicht nur der Delphi-Debugger ist betroffen. Auch Visual Studio hat mit dem Avira Update das selbe Problem:
Code:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
HKEY resKey;
DWORD disposition;
int err = RegCreateKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\Microsoftx\Windows\CurrentVersion\Internet Settings", 0,
NULL, 0, KEY_READ /*| KEY_WRITE*/, NULL, &resKey, &disposition);
if (err == ERROR_INVALID_HANDLE)
{
MessageBox(0, L"ERROR_INVALID_HANDLE: 0xC0000235: NtClose wurde für ein
Handle aufgerufen, das mit NtSetInformationObject gegen Schließen geschützt wurde.", L"Error", MB_OK);
return 1;
}
else
RegCloseKey(resKey);
return 0;
}
Ohne Debugger funktioniert das ganze ohne Probleme. Leider bringt einem das recht wenig, wenn man gerade debuggen muss.