Persits Software, Inc. Knowledge Base Articles

Usage under a 64-bit Server Environment

Problem Description

This article discusses the use of the Persits components in a 64-bit server environment.

Solution

Introduction

Persits Software, Inc. offers all of its COM components as both 32-bit and 64-bit libraries. Functionality-wise, the 64-bit versions are identical to their 32-bit counterparts but can be used with IIS running in the native 64-bit mode.

The names for the 64-bit component DLLs are formed by adding "64" to the end of the filename. For example, the 64-bit AspUpload resides in the DLL aspupload64.dll.

The 64-bit setups are named the same way, e.g. the AspUpload installer's filename is aspupload64.exe.

The 32-bit and 64-bit Modes of IIS

For a Persits component to work properly on your 64-bit Windows server, the component's "bitness" (i.e. 32-bit or 64-bit) must match that of your IIS.

On a 64-bit Windows server, IIS can be run in its native 64-bit mode or 32-bit compatibility mode.

On Windows 2003, the entire IIS can be configured to run in one mode or the other, but not both.

On Windows 2008, Vista, and 7, some virtual directories can be configured to run in the 32-bit mode, and others in the 64-bit mode. See below for details on how to configure your system to run in a particular mode.

What if there is a bitness mismatch?

If a 32-bit component is used with IIS running in the 64-bit mode, or vice versa, an error will occur. In classic ASP, the Server.CreateObject line will generate the error message

Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object

Note that due to Microsoft's penchant for ambiguity in error reporting, this error does not necessarily mean a bitness mismatch. It can also mean a lack of NTFS permissions on the component DLL (which is a totally different problem covered here.)

In .NET, an error may be even more vague, but will almost certainly be coming from the line where the instance of the object is being created.

To fix the bitness-mismatch error, you need to match up the bitnesses of the involved parties (IIS and the component.)

IIS running in a 32-bit compatibility mode

If the IIS you have to work with is run in a 32-bit compatibility mode, you have to use the 32-bit versions of the components. There is one caveat: the 32-bit registration key now needs to be placed in a different area of the system registry and you have to do it manually, as our setup applications won't do it for you.

The new registry location is:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Persits Software\<product>\RegKey

Note the additional node Wow6432Node in the path.

For example, the 32-bit registration key for AspUpload will go under

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Persits Software\AspUpload3\RegKey

and for AspEmail, under

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Persits Software\AspEmail\RegKey

and so on.

IIS running in the native 64-bit mode

In this case, you need to install the 64-bit version of the component. The easiest way is to run its 64-bit installer (such as aspupload64.exe) which takes care of registering the DLL and installing the key, if you already own one.

The registration key goes under its regular location (the same as a 32-bit key on a 32-bit system):

HKEY_LOCAL_MACHINE\SOFTWARE\Persits Software\<product>\RegKey

The key itself is different, though. All 64-bit keys are 76-characters long and look something like this:

gkA0PNAOM4zGQLLyqKdoeMMxsdzosDm/STsnxCq0i4E93sq53r/HJDKcO9fcQOpOiQD3NDkostMB

With the exception of AspPDF, you have to purchase a 64-bit key anew even if you already own a 32-bit key. If you are unable or unwilling to purchase the 64-bit license, you still have the option of switching IIS to the 32-bit mode and reusing your existing 32-bit registration key.

An attempt to run the 64-bit version of a component with a 32-bit key will result in the following error:

Invalid key length. Should be 76 characters.

Windows 2008, Vista, 7, 8, 2012

Windows 2008/Vista/7 allows some virtual directories to run in the 32-bit mode, and others in the 64-bit mode. A virtual directory is configured to run in the 32-bit mode by configuring its Application Pool to enable 32-bit application, as shown below.

Therefore, you can run the 32-bit and 64-bit versions of the Persits components side by side on Windows 2008/Vista/7/8/2012. You still need separate 32-bit and 64-bit keys for all the products except AspPDF, and the key locations in the system registry are as described above.

Windows 2003

To enable the 32-bit mode, the following command needs to be executed:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

To disable the 32-bit mode, the command is:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0

(Source: http://support.microsoft.com/kb/894435).

It is important to know which mode your IIS is running in and choose the bitness of the component accordingly. Check with your webmaster or system administrator, if necessary.