I am in the processing of moving from my 32-bit Windows 7 system (with OORexx 4.0.1) to a 64-bit Windows 7 System (with OORexx 4.1.2). The SysIni function behaves differently using 64-bit 4.1.2 OORexx than it did on the 32-bit 4.0.1 system with regard to respecting the VirtualStore directory. I believe the 32-bit 4.0.1 system was correct. An INI file residing in the %localappdata%\Virtualstore\Windows directory was found (without specifying the directory) in 32-bit 4.0.1, but it is not found in 64-bit 4.1.2.
This is turning into a real show-stopper for moving off my old system to my new 64-bit machine. Is this a known bug? Does it work on an earlier 4.1 on 64-bit Windows, or 4.0 on 64-bit Windows?
This is not a bug in ooRexx, but rather the way Windows works. The SysIni function has no knowledge of Windows virtualization.
A file found in one location on 32-bit Windows has no guarantee of being found in the same place in Windows 64-bit
Virtualization is only enabled for:
32 bit interactive processes
Virtualization is disabled for:
64 bit processes
Virtualization being turned off for 64-bit processes is the cause of your problem.
Here is another quote from MSDN concerning the Windows API that the SysIni function uses:
Note This function is provided only for compatibility with 16-bit Windows-based applications. Applications should store initialization information in the registry.
So, you are using technology that is pretty out-of-date.
You appear to be correct. Standard file access appears to work as if UAC is turned off as well. The following "exists" function returns 0 for "C:\Windows\My.ini" on 64-bit Windows where the file is in the Virtual Store, while it returns 1 on 32-bit Windows.
if stream(arg(1),"C","QUERY EXISTS") = ''
then return 0
else return 1
Using the registry is generally a total pain when you want to be able to use a text editor to change your Rexx application's parameters. It looks like I will need to change the Rexx programs to specifically look in the Virtual Store. It sure beats running it in an XP-mode virtual machine.