2016-05-12 3 views
2

geprüft Wenn 32bit App wie Java oder Python versucht, c:\windows\system32\bash.exe zu öffnen, diese Datei einfach nicht gefunden.Windows 10 bash.exe (linux user space) existiert nicht, wenn von 32 Bit app

Wie auch immer, es funktioniert perfekt, wenn Prozess ir 64bit. Ich habe eine einfache C-App erstellt, um zu überprüfen, wie sie funktioniert.

#include <stdio.h> 
#include <windows.h> 

int main(int argc, char *argv[]) { 
char* path; 
OFSTRUCT junk; 

if (argc != 2) { 
printf("provide path to file"); 
return 1; 
} 
path = argv[1]; 
if(fopen(path, "r")) { 
    printf("OK: Runtime reports file exists"); 
} else { 
    printf("ERR: Runtime reports file does not exist"); 
} 

printf("\n"); 
if (OpenFile(path, &junk,OF_EXIST) != HFILE_ERROR) { 
    printf("OK: Win32API reports file exists"); 
} else { 
    printf("ERR: Win32API reports file does not exist"); 
} 

return 0; 

}

Es meldet OK/OK, wenn sie als x64 und ERR/ERR kompiliert und verknüpft, wenn sie als x86 zusammengestellt. Wie könnte es sein? Gibt es eine Möglichkeit, Dateien von 32-Bit-Apps in Windows zu "verstecken"?

+2

Dies ist das [Dateisystem Redirector] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187.aspx) in Aktion. – Blorgbeard

+0

bitte als Kommentar posten, ich werde es akzeptieren. – user996142

Antwort

4

Dies ist die file system redirector in Aktion.

Wenn eine 32-Bit-Anwendung versucht, auf% windir% \ System32 zuzugreifen, wird der Zugriff in den meisten Fällen auf% windir% \ SysWOW64 umgeleitet.

Also, Ihre 32-Bit-Anwendung sucht stattdessen nach C:\Windows\SysWOW64\bash.exe, die vermutlich nicht existiert.

Der empfohlene Weg, um es außer Kraft zu setzen:

32-Bit-Anwendungen das native Systemverzeichnis windir% durch Substitution zugreifen% \ Sysnative für% windir% \ System32. WOW64 erkennt Sysnative als speziellen Alias, um anzuzeigen, dass das Dateisystem den Zugriff nicht umleiten soll.

Beachten Sie, dass es ähnliche Weiterleitungen für die registry gibt.

+0

Nochmals vielen Dank. Darüber hab ich nie nachgedacht. Jetzt werde ich https://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx sorgfältig lesen. – user996142