Ok so i took a look at my Windows 8.1 64 bit system and compared it to my 8.1 test syetm. I found all the following keys on the test system had the file name only while my main system which the repairs havent be ran on have the full file path.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{0000002F-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020421-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020422-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020423-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020425-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{0BE35203-8F91-11CE-9DE3-00AA004BB851}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{0BE35204-8F91-11CE-9DE3-00AA004BB851}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{46763EE0-CAB2-11CE-8C20-00AA0051E5D4}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{B196B286-BAB4-101A-B69C-00AA00341D07}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\CLSID\{DF0B3D60-548F-101B-8E65-08002B2BD119}\InprocServer32]
@="C:\\Windows\\System32\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0000002F-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020420-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020421-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020422-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020423-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020425-0000-0000-C000-000000000046}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0BE35203-8F91-11CE-9DE3-00AA004BB851}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0BE35204-8F91-11CE-9DE3-00AA004BB851}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{46763EE0-CAB2-11CE-8C20-00AA0051E5D4}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{B196B286-BAB4-101A-B69C-00AA00341D07}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{DF0B3D60-548F-101B-8E65-08002B2BD119}\InprocServer32]
@="C:\\Windows\\SysWOW64\\oleaut32.dll"
So on my test system I put all of those back with the full path.
Then I ran these two commands only (Which is what the register system files does)
%SystemRoot%\system32\regsvr32.exe %SystemRoot%\system32\oleaut32.dll
%systemroot%\SysWoW64\regsvr32.exe %systemroot%\SysWoW64\oleaut32.dll
And when i checked the registry keys again, sure enough the path was removed. So the dll file itself is removing the full path and just putting in the file name. This doesn't seem to break anything else from what I can tell.
So it looks like virtual box is expecting a full path when it looks at those registry keys and since it doesn't have the full path it doesn't load the file like it needs. Where other programs will auto look in the system32 folder instead. Which would explain why I havent seen any other programs have that trouble.
But that leaves questions. Why does Microsoft own dll file change what is the default from a fresh install when you register it? Is this a bug in their dll or is it on purpose?
I have searched and almost any articles by MS on how to fix something in Windows that has to do with that file has it listed as just registering it like you would any other dll file and exactly as my repair does it.
So it is a simple bug in virtual box where instead of looking for the full path it just needs to look for that and if the path isnt there auto check the system32 folder? I dont know on the virtual box part, but I do know that any of my programs that calls that file has no problem with it when the full path isnt there.
So not sure what the right thing is to do, perhaps I should check to see if these registry keys are the same on each version of windows, and if so simply have my program add the full paths back after the repair.
Shane