Windows 2000 - OldCigarettes Windows 2000 XP API wrapper pack

OldBoy2k

Posts: 27   +0
Hi guys,

as maybe some already heard, most of the latest XP games and applications can be run on Windows 2000 using OldCigarettes XP Wrapper and BlackWingCats KDW Wrapper.For any questions and problems installing the wrapper or XP games and software please post below.

Quick-Installguide OldCigarette's 2000 XP API Wrapper:
This Quick-Installguide was created because of some install and usage confusion lately.Since replacement of important system files can seriously harm your system please a) read this Quick-Installguide carefully and b) ask whenever something is not clear before doing experimentation on your own!

Quick-Installguide:
1) create a folder c:\oldcigarettes wrapper files\
2) download: OldCigarettes wrapper pack (download location below)
3) create a folder c:\oldcigarettes wrapper files\org system files\
4) copy the following windows system files to the created -org system files- directory:
c:\winnt\system32\
=================
ADVAPI32.DLL
KERNEL32.DLL
SHELL32.DLL
USER32.DLL
ws2_32.dll
wtsapi32.dll

next, rename these libs inside the c:\oldcigarettes wrapper files\org system files\ folder to:
=================
ADVAPI32_ORG.DLL
KERNEL32_ORG.DLL
SHELL32_ORG.DLL
USER32_ORG.DLL
ws2_32_ORG.dll
wtsapi32_ORG.dll

5) extract the wrapper pack in the c:\oldcigarettes wrapper files\ directory.
The next 5 steps are related fixing of games.If you want to fix a application then continue reading from 11):
6) create a folder c:\oldcigarettes wrapper files\x3daudio driver\
7) download: Win2K X3Daudio drivers (google for 'Win2K X3Daudio drivers')
8) extract Win2k x3daudio driver to c:\oldcigarettes wrapper files\x3daudio driver\ directory
9) creata a folder c:\oldcigarettes wrapper files\aclayers\
10) copy aclayers.dll from c:\winnt\apppatch\ to c:\oldcigarettes wrapper files\aclayers\ directory
(don't need to rename it to aclayers_ORG.dll).Aclayers.dll is needed in case of copyprotection problems with the wrapper kernel.
11) double click the ExcludeFromKnownDlls.reg from the wrapper pack and add the entries to your registry.Then reboot your system.

OKAY, thats the basic wrapper directory for file usage.From here you can copy all files which are eventually needed to the binaries directory.Info: The binaries directory is the directory of the installed game or application which contains the main game executable.Some game installations just use a short folder named "bin".

Some general safety notes when using wrapper & other system files:
1) never copy any of the *.ORG files back to the c:\winnt\system32 directory
2) never copy any of internet downloaded system files (for example: dbghelp,iphalpi,psapi) listed in the fixes to the c:\winnt\system32 directory
3) never download ADVAPI32.DLL,KERNEL32.DLL,SHELL32.DLL,USER32.DLL,ws2_32.dll,wtsapi32.dll,ntdll.dll from other locations of the internet.None of these system XP files is needed!Only needed are the wrapper system files.
4) the uxtheme.dll has to be copied also to the binaries directory if needed.There is no uxtheme.dll on Win2k.

Wrapper FAQ:
1) Q: What is OldCigarette's API Wrapper Pack (OCW) and BlackWingCats KDW API Wrapper about?
A: The authors,OldCigarette and BlackWingCat,merely started programming on WinXP API extending API function libraries for Windows 2000 nearly at the same time in the end of 2007.Both projects are developed independently.The Wrapper packs in theory contain "new programmed" similar named WinXP system files (kernel32,user32,shell32 etc.) and tools to get newer WinXP+ games and applications to work on Windows 2000 by providing and extending missing API functions.Its important to mention to never copy these files into the WINNT/System32 directory!If you're unsure how to use the Wrapper please ask in here.

2) Q: There are functions covered by OldCigarettes Wrapper (OCW) and some are covered by BlackWingCats KDW Wrapper.Is it possible to cross-mix both Wrappers?
A: Since both Wrappers are not correlated and are based on single files you can use for example "Kernel32.dll" from OldCigarette's Wrapper pack with the "User32.dll" from BlackWingCat's KDW Wrapper and so on.It is not possible to use the same system files of both Wrapper Packs at the same time!

3) Q: What is the meaning of a "Windows 2000 Wrapper"?What does it do?
A: A Windows 2000 Wrapper contains specialised system files that convert API functions from Windows XP+ system files for Windows 2000.In principle it simply extents the API function library of a operating system.

4) Q: Does the Wrapper changes something on my system?
A: No.The Wrapper files are only copied to the binaries directory of the application or game and never copied to the system32 directory (main system directory).It does not influence or harm the system.For your system safety read the Wrapper readme and ask if you're unsure what to do.

5) Q: Will the Wrapper development be restricted and focused on Windows XP compatibility only?
A: No.When possible also Windows Vista, Windows 7 software and games will be taken into account.For games this is of course dependent on the inofficial development of DirextX 10+ for WinXP or Wined3d projects.

6) Q: Is the OldCigarette Win2k API Wrapper freeware?
A: The usage of the OCW Wrapper is free.Its programmed und released under GNU Lesser General Public License.Changes and distribution have to be made according the GNU Lesser General Public License and conditions.The Wrapper authors and moderators support this project on non-profit base and intentions so please appreciate the work which is mostly done in spare free time.

7) Q: Will current game or software updates be still working with the provided fix?
A: Mostly along with updates only stability issues and bugs are fixed.It can happen that some not yet covered and implemented Wrapper functions are used in the new updates of games or software and that the fix doesn't work anymore.In this case please let us know and post about problems here.

8) Q: What is the binaries directory?
A: Basically thats the game directory where the game executable is stored.Sometimes the folder is called "bin" (=binaries) so you need to check the folders for the main game executable (*.exe).It can happen that you need to copy the Wrapper files next to the launcher.exe to get also the desktop shortcuts working.

9) Q: Whats the main difference between OldCigarettes Win2k Wrapper and BlackWingCats KDW Wrapper?
A: For User32.dll,Kernel32.dll and Shell32.dll both Wrapper roughly cover the same functions.However OldCigarette started with the Wrapper focused on games and BlackWingCat's with KDW on applications.For instance KDW Wrapper includes Win2k compatible cancrypt32.dll,ntdll.dll,msvcrt.dw7,rpcrt4.dll and ole32.dll system files which are used a lot by applications.OldCigarettes API Wrapper (OCW) has imporoved compatibility with games and new copyprotections.

Offtopic FAQ:
1) Q: Windows 2000 is nearly 10 years old and much older than Windows XP.Why all the work?
A: Windows 2000 got released one year ahead of Windows XP.Wouldn't you pick someone for life who is one year older?However,we believe that Windows 2000,because of its business proved programming is the most stable and recource friendly Windows operating system which was ever released from Microsoft(R).

Download OldCigarette's Wrapper v1.10 (latest version) from BlackWingCats blog:
http://blog.livedoor.jp/blackwingcat/archives/1503961.html

BlackWingCats KDW Wrapper links:
KDW Wrapper homepage:
http://www7.atwiki.jp/win2000/pages/17.html

KDW Wrapper function list:
http://blog.livedoor.jp/blackwingcat/archives/14786.html

BlackWingCat recent software blog:
http://blog.livedoor.jp/blackwingcat/

Win2kgaming Forum Update 13-10-2011:
New address for the Win2kgaming Forum

BR
OldBoy2k

__
Win2k XP API Wrapper pack
Windows 2000 XP Wrapper
Windows 2000 to XP API Wrapper Pack
 

odriscoll27

Posts: 65   +0
Hey nice little guide you have though I do believe there is a "guides" section on the techspot forums.

Good effort mate :)
James :)
 

onlyjustincase

Posts: 8   +0
Return of win2kgaming

Gday OldBoy2k,

Anything we can do to speed up the return of win2kgaming? Donations??

win2kgaming really needs its own domain name and paid hosting. With plenty of $1/month hosts in the US, it should be cheap to setup something up.
 

OldBoy2k

Posts: 27   +0
Hi justincase,

OldCigarette has not yet made a final decision about a concrete hoster.The forum is working fine and we are looking forward to move to the new hoster.We don't want to pick a cheap one, because we just experienced what "cheap" means: No warning,no support and no co-operation with the customers.

In the meantime all backporting problems and wrapper questions can be posted here.

Deus Ex - Human Revolution on Windows 2000:
Missing Exports:
KERNEL32.DLL - AddVectoredExceptionHandler,GetGeoInfoA,GetGeoInfoW,GetModuleHandleExA,
GetUserGeoID,RemoveVectoredExceptionHandler
USER32.DLL - GetRawInputData,RegisterRawInputDevices

Place a win2k_xp_kernel32.ini configuration file in game binaries folder to bypass version check at launch up:
[win2k_xp_kernel32]
majVer=5
minVer=1
buildNum=2600
verifyVersion=0

Source: msfn: Deus Ex 3 on Windows 20000
Thanks to Cyker for posting the fix!

TeamSpeak 3 on Windows 2000:
forum.teamspeak: Making-TS3-runs-under-Windows-2000

snork.ca: TeamSpeak 3 on Windows 2000 (new
Thanks to snorkasaurus for posting the recent TeamSpeak 3 on Windows 2000 guide!

Attention:
If you get a 'HeapQueryInformation' or 'HeapSetInformation' kernel error, thats because you need to update your kernel version!Either install the two hotfixes or the update rollup 1 v2:
HeapQueryInformation function in Kernel error
HeapSetInformation function in Kernel error
The SRP1v2 has the KB number KB891861 and can be downloaded from microsofts download section:
click to download: Update Rollup 1 for Windows 2000 SP4 (KB891861
The v2 indicates the second update of update rollup 1 "Windows2000-KB891861-v2-x86-ENU.EXE".Important: When you apply windows 2000 SP4 security rollup package1 v2 to a system with a HTT or Dual Core CPU you may encounter a CPU heatproblem.In this case make the following modification to your registry:

Edit the registry Add a DWORD value named 14140000FFFFFFFF that has a value of 00000010 to the following registry setting:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\HAL

Only this registry entry alone fixes the problem.The /usepmtimer + the registry fix don't work together!

greetings
OldBoy2k

_____
Deus Ex 3 Win2k fix
Deus Ex Human Revolution Windows 2000 fix
Deus Ex Human Revolution on Windows 2000
TeamSpeak 3 on Win2k
TeamSpeak 3 on Windows 2000
HeapQueryInformation function kernel error on Windows 2000
HeapSetInformation function kernel error on Windows 2000
 

onlyjustincase

Posts: 8   +0
Hi justincase,

OldCigarette has not yet made a final decision about a concrete hoster.The forum is working fine and we are looking forward to move to the new hoster.We don't want to pick a cheap one, because we just experienced what "cheap" means: No warning,no support and no co-operation with the customers.

Gday OldBoy2k,

Didn't you just experience what "free" means?? I'm sure the win2kgaming site used to be hosted on a free hosting provider. cheap != free.

I've had experience which a cheap provider here in Australia($4/month) and their support was great, both email and telephone. Perhaps someone could recommend a US hoster that they have personal experience with, as I'm sure you would like a local as opposed to international telephone number to ring if something goes wrong.
 
KernelEx related question and DOTNET howto.

hello,
i have reposted my dot net instructions on wordpress, should anyone need it.
cant post links:
digitallyhere.wordpress
dotnet-getting-net-3-5-to-work-on-2k

oldboy2k
you sent a reply to my .NET post about "not a valid win32 application", pointing to a page on the ole site. i never followed this up as i had no need of it.. what was the overall gist of it? in case i need dotnet4 or related progs.

===
i have started to use KernelEx on a windows 98 installation and i have a good feeling its easier to use than the api wrapper. is it possible to add a XP-like compatibility mode property sheet as Kernel EX has? because this is very convienent and doesnt need any batch files. kernelex is on sourceforge so i think its open source so you could borrow some of their source. perhaps even put the api-wrapper (which would probably then be called KernelEX for win2k!!) on sourceforge as well....

i had an irc client install very successfully, and the KEx install was very smooth, better than installing the program with apiwrap on 2k (maybe it just needs more knowledge to do it)... so please consider it :) - for newbies!!

Charlie.
 

OldBoy2k

Posts: 27   +0
Hi Charlie

hello,
i have reposted my dot net instructions on wordpress, should anyone need it.
cant post links:
digitallyhere.wordpress
dotnet-getting-net-3-5-to-work-on-2k
can you please post the whole link.Thanks.

Do you refer to this post?
more-details-on-installing-net-35-in-windows-2000/
Info: a while back BlackWingCat released Frame Network 3.5 for Windows 2000 on his blog (requires SRP1v2)

oldboy2k
you sent a reply to my .NET post about "not a valid win32 application", pointing to a page on the ole site. i never followed this up as i had no need of it.. what was the overall gist of it? in case i need dotnet4 or related progs.
yeah, you can use PE Tools and change the EXE PE Header MinorSubSystem 0001 to 0000 to get stuff working on Win2k.

i have started to use KernelEx on a windows 98 installation and i have a good feeling its easier to use than the api wrapper. is it possible to add a XP-like compatibility mode property sheet as Kernel EX has? because this is very convienent and doesnt need any batch files. kernelex is on sourceforge so i think its open source so you could borrow some of their source. perhaps even put the api-wrapper (which would probably then be called KernelEX for win2k!!) on sourceforge as well....
plans are to provide a user friendly GUI in the future :)

best regards
 
text

add http and also com to digitallyhere.wordpress and you have it. (they want 5 posts before i can add links, i wont pollute this topic)

major subsystem is like the OS you have right?
cant you trick that with out modding the file, (perhaps like the compat mode thing)
 

OldBoy2k

Posts: 27   +0
major subsystem is like the OS you have right?cant you trick that with out modding the file, (perhaps like the compat mode thing)
just looked at my notes.It also works with MajorSubsystem but MinorSubSystem 0001 set to 0000 is the correct assigning for Win2k
==> MajorSubsystem=Product=NT 5.0=0005 and MinorSubsystem=Version=0000
We have been discussing this issue earlier this year right before the forum got shutdown and have to look into it again.From what i remember the subsystem check is proceeded in some other system library.

okay,thanks charlie.
DOTNET getting .net 3.5 to work on 2k

i have started to use KernelEx on a windows 98 installation and i have a good feeling its easier to use than the api wrapper. is it possible to add a XP-like compatibility mode property sheet as Kernel EX has? because this is very convienent and doesnt need any batch files. kernelex is on sourceforge so i think its open source so you could borrow some of their source. perhaps even put the api-wrapper (which would probably then be called KernelEX for win2k!!) on sourceforge as well....
You could transform Win2k->KDW 2k with fcwin2k.exe and kdllinst.exe.After that you don't need to play around with single wrapper files anymore.BUT: Thats not reversible and limited to KDW.

BR
 

OldBoy2k

Posts: 27   +0
Hi,

here are two scripts to remove launch condition checks in msi installers previous posted on win2kgaming.Its recommended to make backups of the msi archives before running the scripts.Its a bit of try and error which version works flawlessly.

usage: copy&paste code in MS text editor and save as *.vbs.Drop msi archive on vbs script.

Remove MSI OScheck Script :
(all credits and thanks to the author darkgamorck)

RemoveOScheck v1.0
Code:
Option Explicit 

Const msiOpenDatabaseModeReadOnly = 0 
Const msiOpenDatabaseModeTransact = 1 

Dim argNum, argCount:argCount = Wscript.Arguments.Count 
If (argCount < 1) Then 
Wscript.Echo "Please supply the name of the msi file to be modified." 
Wscript.Quit 1 
End If 

' Scan arguments for valid SQL keyword and to determine if any update operations 
Dim openMode : openMode = msiOpenDatabaseModeReadOnly 
openMode = msiOpenDatabaseModeTransact 

' Connect to Windows installer object 
Dim installer : Set installer = Nothing 
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError 

' Open database 
Dim databasePath:databasePath = Wscript.Arguments(0) 
Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError 

' Process SQL statements and delete the crap out of this installer! 
Dim query, view, record, message, rowData, columnCount, delim, column 
Set view = database.OpenView("Delete from LaunchCondition") : CheckError 
view.Execute 
wscript.echo "Launch Conditions Removed" 
Set view = database.OpenView("Delete from InstallExecuteSequence where Action='OnCheckSilentInstall'") 
view.Execute 
wscript.echo "OnCheckSilentInstall step removed" 
Set view = database.OpenView("Delete from Property where Property = 'ISSETUPDRIVEN'") 
view.Execute 
wscript.echo "Property ISSETUPDRIVEN removed" 
Set view = database.OpenView("INSERT INTO Property (Property,Value) VALUES ('ISSETUPDRIVEN',1)") 
view.Execute 
wscript.echo "Property ISSETUPDRIVEN added" 
database.Commit 
Wscript.Quit 0 

Sub CheckError 
Dim message, errRec 
If Err = 0 Then Exit Sub 
message = Err.Source & " " & Hex(Err) & ": " & Err.Description 
If Not installer Is Nothing Then 
Set errRec = installer.LastErrorRecord 
If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText 
End If 
Fail message 
End Sub 

Sub Fail(message) 
Wscript.Echo message 
Wscript.Quit 2 
End Sub

RemoveOScheck v1.1
Code:
Option Explicit 

Const msiOpenDatabaseModeReadOnly = 0 
Const msiOpenDatabaseModeTransact = 1 

Dim argNum, argCount:argCount = Wscript.Arguments.Count 
If (argCount < 1) Then 
Wscript.Echo "Please supply the name of the msi file to be modified." 
Wscript.Quit 1 
End If 

On Error Resume Next 

' Scan arguments for valid SQL keyword and to determine if any update operations 
Dim openMode : openMode = msiOpenDatabaseModeReadOnly 
openMode = msiOpenDatabaseModeTransact 

' Connect to Windows installer object 
Dim installer : Set installer = Nothing 
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError 

' Open database 
Dim databasePath:databasePath = Wscript.Arguments(0) 
Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError 

' Process SQL statements and delete the crap out of this installer! 
Dim query, view, record, message, rowData, columnCount, delim, column, cctr 
cctr = 0 
Set view = database.OpenView("Delete from LaunchCondition") 
if ClearError() = false then 
  view.Execute 
  wscript.echo "Launch Conditions Removed" 
  cctr = cctr + 1 
end if 
Set view = database.OpenView("Delete from CustomAction where Action='CA_CheckIfWeCanInstall'") 
if ClearError() = false then 
  view.Execute 
  wscript.echo "Custom Action CA_CheckIfWeCanInstall Removed" 
  cctr = cctr + 1 
end if 
Set view = database.OpenView("Delete from InstallExecuteSequence where Action='OnCheckSilentInstall'") 
if ClearError() = false then 
  view.Execute 
  wscript.echo "OnCheckSilentInstall step removed" 
  cctr = cctr + 1 
end if 
Set view = database.OpenView("Delete from Property where Property = 'ISSETUPDRIVEN'") 
if ClearError() = false then 
  view.Execute 
  wscript.echo "Property ISSETUPDRIVEN removed" 
  cctr = cctr + 1 
end if 
Set view = database.OpenView("INSERT INTO Property (Property,Value) VALUES ('ISSETUPDRIVEN',1)") 
if ClearError() = false then 
  view.Execute 
  wscript.echo "Property ISSETUPDRIVEN added" 
  cctr = cctr + 1 
end if 
if cctr > 0 then 
  database.Commit 
else 
  wscript.echo "This script was unable to make changes to the specific MSI file." 
end if 
Wscript.Quit 0 

Function ClearError 
  if Err.Number <> 0 then 
    Err.Clear 
    ClearError = true 
  else 
    ClearError = false 
  end if 
End Function 

Sub CheckError 
  Dim message, errRec 
  If Err = 0 Then Exit Sub 
  message = Err.Source & " " & Hex(Err) & ": " & Err.Description 
  If Not installer Is Nothing Then 
    Set errRec = installer.LastErrorRecord 
    If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText 
  End If 
  Fail message 
End Sub 

Sub Fail(message) 
  Wscript.Echo message 
  Wscript.Quit 2 
End Sub

Win2kgaming Forum Update 13-10-2011:
New address for the Win2kgaming Forum

BR