---------------------------------------------------------------------------------------------------------------------------------------------
[ENHANCED] VFP 9.0 FIX - SYS(9120) SETS OR RETURNS THE FILE TYPE OF THE VISUAL C++ RUNTIME LIBRARY OF THE COMPILED EXECUTABLE FILES
January 2026
---------------------------------------------------------------------------------------------------------------------------------------------
CCB
1. THE SYS(9120) FUNCTION:
SYS(9120) - Sets or returns the file type of the Visual C++ runtime library of the compiled executable files
Sets or returns the file type of the Visual C++ runtime library of the compiled executable files.
SYS(9120 [, -2 | -1 | 0 | 1 | 2])
Parameters
-2
The Visual C++ runtime library of the compiled executable files is MSVCR70.DLL.
-1
The Visual C++ runtime library of the compiled executable files is MSVCR71.DLL.
0
The Visual C++ runtime library of the compiled executable files is MSVCR100.DLL. 0 is the startup default for Visual FoxPro Advanced.
1
Reserved.
2
The Visual C++ runtime library of the compiled executable files is MSVCRA64.DLL.
Return Value
Character
Remarks
The SYS(9120) function is only used for the BUILD EXE/DLL/MTDLL commands in Visual FoxPro Advanced Interactive Development Environment (IDE).
We can also set the default value in the Windows registry:
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro\10.n\Options\VCRuntimeLibraryFileType (for Visual FoxPro Advanced 32-bit),
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro64\10.n\Options\VCRuntimeLibraryFileType (for Visual FoxPro Advanced 64-bit),
for example, VCRuntimeLibraryFileType = "0".
If we set SYS(9120,0) in Visual FoxPro Advanced 32-bit, and set SYS(9120,2) in Visual FoxPro Advanced 64-bit,
we can save the 32-bit executable files and the 64-bit executable files in the same folder, for example,
MYAPP.EXE && the 32-bit executable file
MSVCR100.DLL && the 32-bit Visual C++ Runtime Library
VFPAR.DLL && the 32-bit VFP Advanced Runtime Library
MYAPP64.EXE && the 64-bit executable file
MSVCRA64.DLL && the 64-bit Visual C++ Runtime Library
VFPAR64.DLL && the 64-bit VFP Advanced Runtime Library
If we set SYS(9120,0) (the default setting), the compiled executable files can run on Windows XP or later.
If we set SYS(9120,-1) or SYS(9120,-2), the compiled executable files can run on Windows 2000 or earlier,
it is the same as Visual FoxPro 9.0 and earlier versions.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Fun529fca :: ; proc near
push ebp ;0x00529fca : 55
mov ebp , esp ;0x00529fcb : 8bec
pushd 0FFFFFFFFh ;0x00529fcd : 6aff
pushd offset Data922268 ;0x00529fcf : 6868229200
pushd offset Label9160f9 ;0x00529fd4 : 68f9609100
mov eax , dword ptr fs:[00h] ;0x00529fd9 : 64a100000000
push eax ;0x00529fdf : 50
mov dword ptr fs:[00h] , esp ;0x00529fe0 : 64892500000000
push ecx ;0x00529fe7 : 51
push ecx ;0x00529fe8 : 51
mov eax , 02FBCh ;0x00529fe9 : b8bc2f0000
call Fun42c118 ;0x00529fee : e82521f0ff
mov eax , dword ptr [ Data937090 ] ;0x00529ff3 : a190709300
mov dword ptr [ ebp - 28 ] , eax ;0x00529ff8 : 8945e4
push ebx ;0x00529ffb : 53
push esi ;0x00529ffc : 56
push edi ;0x00529ffd : 57
mov dword ptr [ ebp - 24 ] , esp ;0x00529ffe : 8965e8
xor edi , edi ;0x0052a001 : 33ff
mov dword ptr [ ebp + 0FFFFD114h ] , edi ;0x0052a003 : 89bd14d1ffff
push edi ;0x0052a009 : 57
pushd 02710h ;0x0052a00a : 6810270000
push edi ;0x0052a00f : 57
mov ebx , dword ptr [ ebp + 8 ] ;0x0052a010 : 8b5d08
mov eax , ebx ;0x0052a013 : 8bc3
call Fun529bc5 ;0x0052a015 : e8abfbffff
mov dword ptr [ ebp + 0FFFFD0E4h ] , eax ;0x0052a01a : 8985e4d0ffff
mov dword ptr [ ebp + 0FFFFD10Ch ] , edi ;0x0052a020 : 89bd0cd1ffff
lea ecx , dword ptr [ ebp + 0FFFFFDE0h ] ;0x0052a026 : 8d8de0fdffff
mov dword ptr [ ebp + 0FFFFD100h ] , ecx ;0x0052a02c : 898d00d1ffff
mov byte ptr [ ebp + 0FFFFFDE0h ] , 00h ;0x0052a032 : c685e0fdffff00
movsx eax , ax ;0x0052a039 : 0fbfc0
;
; ----------------------------------------------------------------------------------------------------------------------------------
; VFP 9.0 FIX - SYS(9120) SETS OR RETURNS THE FILE TYPE OF THE VISUAL C++ RUNTIME LIBRARY OF THE COMPILED EXECUTABLE FILES
; March 2023
; ----------------------------------------------------------------------------------------------------------------------------------
; CCB
;
; SYS(9120) - Sets or returns the file type of the Visual C++ runtime library of the compiled executable files.
;
; 2023/3/5, by ccb
;
cmp eax,9120
je vfpa_sys9120_start
pushd 064h ;0x0052a03c : 6a64
pop esi ;0x0052a03e : 5e
cmp eax , esi ;0x0052a03f : 3bc6
jle Label52a0d0 ;0x0052a041 : 0f8e89001000
mov ecx , 07EAh ;0x0052a047 : b9ea070000
cmp eax , ecx ;0x0052a04c : 3bc1
jg Label52a164 ;0x0052a04e : 0f8f10010000
je Label609b33 ;0x0052a054 : 0f84d9fa0d00
mov ecx , 04F6h ;0x0052a05a : b9f6040000
cmp eax , ecx ;0x0052a05f : 3bc1
jle Label52b6e0 ;0x0052a061 : 0f8e79160000
mov ecx , 07DBh ;0x0052a067 : b9db070000
cmp eax , ecx ;0x0052a06c : 3bc1
jg Label51f355 ;0x0052a06e : 0f8fe152ffff
je Label609700 ;0x0052a074 : 0f8486f60d00
add ecx , 0FFFFFFF9h ;0x0052a07a : 83c1f9
cmp eax , ecx ;0x0052a07d : 3bc1
jg Label4a4938 ;0x0052a07f : 0f8fb3a8f7ff
je Label4f6b07 ;0x0052a085 : 0f847ccafcff
sub eax , 04F7h ;0x0052a08b : 2df7040000
je Label60951e ;0x0052a090 : 0f8488f40d00
dec eax ;0x0052a096 : 48
je Label60950f ;0x0052a097 : 0f8472f40d00
sub eax , 0E4h ;0x0052a09d : 2de4000000
je Label609492 ;0x0052a0a2 : 0f84eaf30d00
sub eax , 01F4h ;0x0052a0a8 : 2df4010000
jne Label462026 ;0x0052a0ad : 0f85737ff3ff
lea eax , dword ptr [ ebp + 0FFFFFDE0h ] ;0x0052a0b3 : 8d85e0fdffff
push eax ;0x0052a0b9 : 50
push dword ptr [ ebp + 12 ] ;0x0052a0ba : ff750c
mov edx , ebx ;0x0052a0bd : 8bd3
call Fun4dc923 ;0x0052a0bf : e85f28fbff
4. APPLIES TO:
VFP 10 (VFP Advanced)
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix246.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix127.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix128.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix129.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix130.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix289.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix290.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix322.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix323.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix397.asp
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|