Since the release of Win Vista, Microsoft introduced file virtualization for legacy applications running as 32bit processes. Released as part of Microsoft\'s User Account Co
FWIW, here is a version of the detection code in Delphi:
unit checkvirtual;
interface
uses windows;
function GetVirtualizationEnabled(var enabled:Boolean):Boolean;
implementation
// Gets whether the current process has UAC virtualization enabled.
// Returns TRUE on success and FALSE on failure.
function GetVirtualizationEnabled(var enabled:Boolean):Boolean;
var
token:THandle;
tmpEnabled:DWORD;
returnLen:DWORD;
begin
result:=false;
enabled:=false;
if not(OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, token)) then exit;
try
if not(GetTokenInformation(token, TokenVirtualizationEnabled,
@tmpEnabled, sizeof(tmpEnabled), returnLen)) then exit;
enabled:=tmpEnabled<>0;
result:=true;
finally
CloseHandle(token);
end;
end;
end.