Standard-Fehler der Delphiprogrammierer. Ein Zeiger in C ist oft Call-by-Reference.
Du gibst einen zufaelligen Zeigerwert an eine funktion, die dorthin schreibt.
Delphi-Quellcode:
program patch;
{$APPTYPE CONSOLE}
uses
Windows;
type
TRegOpenCurrentUser =
function(samDesired: REGSAM; phkResult: PHKEY): LongInt;
stdcall;
var
LibModule: HMODULE;
RegOpenCurrentUser: TRegOpenCurrentUser;
hkResult: HKEY;
begin
LibModule := LoadLibrary('
Advapi32.dll');
if LibModule <> 0
then // DLL wurde erfolgreich geladen
begin
RegOpenCurrentUser := GetProcAddress(LibModule, '
RegOpenCurrentUser');
if Assigned(RegOpenCurrentUser)
and (RegOpenCurrentUser(KEY_READ, @hkResult) = ERROR_SUCCESS)
then
begin
//
end;
end;
end.