I can't believe what I am seeing! Its such a glaring difference I must be doing something wrong.
When I open Windows explorer to see files I am not seeing the same files as when I do an open file with BlackBox.
Specifically C:/Windows/System32 and looking at files beginning with "Sys" I see different results.
Here is a view
The red rectangle surrounds the files of interest.
The green circles are the files that BB shows. Those without the green circles
are not shown by BB.
You should be able to replicate my results.
NB: I selected All Files(*.*) for BB
File discrepancy between BB and Windows
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: File discrepancy between BB and Windows
I really do want your help.
Below is how the directory appears under BB File->Open and after
navigating to the same location as was done with Windows Explorer.
As you can see the two views (Windows & BB) are different.
Windows has 10 files where as BB has only 5 files'
Why the discrepancy?
Below is how the directory appears under BB File->Open and after
navigating to the same location as was done with Windows Explorer.
As you can see the two views (Windows & BB) are different.
Windows has 10 files where as BB has only 5 files'
Why the discrepancy?
Re: File discrepancy between BB and Windows
I can't give any help, but I notice something similar with build 1057 under Windows 10.DGDanforth wrote:I really do want your help.
...
Windows has 10 files where as BB has only 5 files'
Why the discrepancy?
Windows has 34 files beginning "Sys", BlackBox has 19.
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: File discrepancy between BB and Windows
Thank you Robert for showing the "bug" is real.
Doug
Doug
Robert wrote:I can't give any help, but I notice something similar with build 1057 under Windows 10.DGDanforth wrote:I really do want your help.
...
Windows has 10 files where as BB has only 5 files'
Why the discrepancy?
Windows has 34 files beginning "Sys", BlackBox has 19.
Re: File discrepancy between BB and Windows
This is a "WOW" issue, it occurs when the win32 app is running on win64 OS.
you can get an answer form stackoverflow.
https://stackoverflow.com/questions/959 ... it-windows
luowy
you can get an answer form stackoverflow.
https://stackoverflow.com/questions/959 ... it-windows
luowy
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: File discrepancy between BB and Windows
Thank you luowy.luowy wrote:This is a "WOW" issue, it occurs when the win32 app is running on win64 OS.
you can get an answer form stackoverflow.
https://stackoverflow.com/questions/959 ... it-windows
luowy
What a mess! I just stumbled upon the inconsistency when looking for a dll.File System Redirector
05/30/2018
2 minutes to read
The %windir%\System32 directory is reserved for 64-bit applications on 64-bit Windows. Most DLL file names were not changed when 64-bit versions of the DLLs were created, so 32-bit versions of the DLLs are stored in a different directory. WOW64 hides this difference by using a file system redirector
Doug
Re: File discrepancy between BB and Windows
that means the "C:\Windows\System32" is a special dir,
e.g. though win32app and win64app both have a "C:\Windows\System32\Kernel32.dll" files,
but they are not a same file.
If win32app wants to see all the files in that dir which win64app can see, two new functions must be used:
luowy
e.g. though win32app and win64app both have a "C:\Windows\System32\Kernel32.dll" files,
but they are not a same file.
If win32app wants to see all the files in that dir which win64app can see, two new functions must be used:
Code: Select all
MODULE TestWOWFiles;
IMPORT Log := StdLog, WinApi, S := SYSTEM;
(* https://stackoverflow.com/search?q=findfirstfile+system32 *)
(* https://stackoverflow.com/questions/95956/findnextfile-fails-on-64-bit-windows *)
TYPE
HMODULE = WinApi.HMODULE;
PVOID = WinApi.PtrVoid;
BOOL = WinApi.BOOL;
(*
BOOL WINAPI Wow64DisableWow64FsRedirection(
_Out_ PVOID *OldValue
);
BOOL WINAPI Wow64RevertWow64FsRedirection(
_In_ PVOID OldValue
);
*)
VAR
Wow64DisableWow64FsRedirection: PROCEDURE (VAR OldValue: PVOID): BOOL;
Wow64RevertWow64FsRedirection: PROCEDURE (OldValue: PVOID): BOOL;
PROCEDURE GetProcAddress (IN dll, pname: ARRAY OF SHORTCHAR; VAR adr: INTEGER);
VAR h: HMODULE;
BEGIN
h := WinApi.GetModuleHandleA(dll); adr := 0;
IF h # 0 THEN
adr := S.VAL(INTEGER, WinApi.GetProcAddress(h, pname));
END;
END GetProcAddress;
PROCEDURE Init ();
BEGIN
GetProcAddress("KERNEL32.DLL", "Wow64DisableWow64FsRedirection",
S.VAL(INTEGER, Wow64DisableWow64FsRedirection));
GetProcAddress("KERNEL32.DLL", "Wow64RevertWow64FsRedirection",
S.VAL(INTEGER, Wow64RevertWow64FsRedirection));
END Init;
PROCEDURE Exist(IN fname: ARRAY OF CHAR): BOOLEAN;
BEGIN
RETURN WinApi.GetFileAttributesW(fname) # -1;
END Exist;
(* pre: copy sysclass.dll from system dir to Test\tmp *)
PROCEDURE Check* ();
VAR old, res: INTEGER;
BEGIN
Log.String("win32"); Log.Ln;
Log.Bool(Exist("C:\Windows\System32\Kernel32.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysclass.dll")); Log.Ln; (*false*)
Log.Bool(Exist("Test\tmp\sysclass.dll")); Log.Ln; (* true*)
Log.Bool(Exist("C:\Windows\System32\sysdm.cpl")); Log.Ln;(* true*)
res := Wow64DisableWow64FsRedirection(old);
IF res # 0 THEN
Log.String("win64 "); Log.Ln;
Log.Bool(Exist("C:\Windows\System32\Kernel32.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysclass.dll")); Log.Ln; (* true*)
Log.Bool(Exist("Test\tmp\sysclass.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysdm.cpl")); Log.Ln;(* true*)
res := Wow64RevertWow64FsRedirection(old);
IF res == 0 THEN Log.String("error2!"); Log.Ln; END;
ELSE
Log.String("error!"); Log.Ln;
END;
END Check;
BEGIN
Init();
END TestWOWFiles.
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: File discrepancy between BB and Windows
Here is what I get on my Windows 10 64 bit HP laptop
which differs from your comments for the procedureswin32
$TRUE
$FALSE
$FALSE
$TRUE
win64
$TRUE
$TRUE
$FALSE
$TRUE
luowy wrote: Log.String("win32"); Log.Ln;
Log.Bool(Exist("C:\Windows\System32\Kernel32.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysclass.dll")); Log.Ln; (*false*)
Log.Bool(Exist("Test\tmp\sysclass.dll")); Log.Ln; (* true*)
Log.Bool(Exist("C:\Windows\System32\sysdm.cpl")); Log.Ln;(* true*)
res := Wow64DisableWow64FsRedirection(old);
IF res # 0 THEN
Log.String("win64 "); Log.Ln;
Log.Bool(Exist("C:\Windows\System32\Kernel32.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysclass.dll")); Log.Ln; (* true*)
Log.Bool(Exist("Test\tmp\sysclass.dll")); Log.Ln;(* true*)
Log.Bool(Exist("C:\Windows\System32\sysdm.cpl")); Log.Ln;(* true*)
luowy
Re: File discrepancy between BB and Windows
do you notice this comment?that demonstrate the System32 is a special directory;
what I understand:
it is not a BB bug, it is a feature of WoW64:
that make win32 and win64 can use same name sysytem library,but they are actually not same file!
e.g. Kernel32.dll will be loaded by win32 app, also loaded by win64 app, but they are different file!
the explorer is win64 app, so it show different contents from BB(Win32app) ;
outside of the system32 directory, win32app and win64app will show same contents,
if you want to check the win64's system32 contents with BB, you can refer to the example I gave;
luowy
Code: Select all
(* pre: copy sysclass.dll from system dir to Test\tmp *)
what I understand:
it is not a BB bug, it is a feature of WoW64:
that make win32 and win64 can use same name sysytem library,but they are actually not same file!
e.g. Kernel32.dll will be loaded by win32 app, also loaded by win64 app, but they are different file!
the explorer is win64 app, so it show different contents from BB(Win32app) ;
outside of the system32 directory, win32app and win64app will show same contents,
if you want to check the win64's system32 contents with BB, you can refer to the example I gave;
luowy