PERL scripts fail to execute and not load the Advapi32.dll file (155357)



The information in this article applies to:

  • Microsoft Internet Information Server 1.0
  • Microsoft Internet Information Server 2.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services version 5.1
  • Microsoft Internet Information Services version 6.0

This article was previously published under Q155357
We strongly recommend that all users upgrade to Microsoft Internet Information Services (IIS) version 6.0 running on Microsoft Windows Server 2003. IIS 6.0 significantly increases Web infrastructure security. For more information about IIS security-related topics, visit the following Microsoft Web site:

SYMPTOMS

When you run a PERL script with Microsoft Internet Information Server (IIS), you may get the following error:
CGI Error:

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

Cannot load advapi32.dll.

However, the PERL script will run without errors from the command line without using IIS.

CAUSE

The Advapi32.dll file is used by PERL and in turn, tries to open another DLL in the Microsoft Windows NT System32 directory. If it fails to load the DLL in \System32, Advapi32.dll will also fail to load causing the above error message.

WORKAROUND

The credentials of the IUSR_servername (IIS anonymous account) are used to access the Windows NT System directories. If this account does not have sufficient privileges to a file or directory, PERL or other CGI scripts may fail to execute.

Check the permissions on the Winnt\System32 directory and make sure the IUSR_servername account has sufficient access.

Note Restrict write access permissions for the IUSR_servername account. This restriction will help limit the access anonymous users.

Modification Type:MinorLast Reviewed:3/31/2006
Keywords:kbenv KB155357