Code:
#define _WIN32_WINNT 0x0501
#include <windows.h>
PVOID OldValue;
HANDLE hFile;
BOOL bRet = Wow64DisableWow64FsRedirection (&OldValue);
if (bRet == TRUE)
{
// Open a file
hFile = CreateFile(TEXT("c:\\windows\\system32\\notepad.exe"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
// Restore the previous WOW64 file system redirection value.
Wow64RevertWow64FsRedirection (OldValue);
}
if( INVALID_HANDLE_VALUE != hFile )
{
// Use the file
handle
}
Also wenn ich das richtig verstehe, dann wird hier (ich weis nicht was PVOID für ein Daten-Typ sein soll) in "OldValue" mithilfe von der Funktion "Wow64DisableWow64FsRedirection" der Ursprungszustand gespeichert, wenn das geglückt ist, dann wird die Datei einfach nur aufgerufen (sozusagen dem shellexecute entsprechend, bloß eben mit dem Umweg erst ein
Handle der Datei zu bekommen und danach erst die Datei zu öffnen) und danach wird das mit dem Umleiten wieder auf den Ursprungswert zurückgesetzt!
Das erscheint mir eigentlich ganz einleuchtend...
Aber wie man diese Redirection-Funktion in Delphi verwendet (bzw. weis ich gar nicht ob es die da gibt) hab ich keine Ahnung. Weil mir C++ hab ich mich noch nie beschäftigt, aber es gibt hier im Forum glaub ich ein paar die das mal "übersetzen" könnten...
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg