S
Steve
I have created an exit module for a W2K CA. I implement the ICertExit and
the ICertManageModule interfaces. I then register the dll. But I can't get
the dll to show up in the 'Exit Module' tab of the CA mmc snapin app.
My exit module is a C++ ATL app.
What more do I need to do?
Thanks,
Steve
P.S. I am following instructions provided by the platform SDK documentation:
Remarks
No more than one Visual Basic exit module may be registered on the
Certificate Services server at one time. If more than one Visual Basic exit
module is registered, the Certification Authority MMC snap-in, Certificate
Services application, or certutil command line program may produce errors.
Note that the Microsoft Visual Basic development environment automatically
registers a DLL when it is successfully built. As a result, you may
encounter this situation when one Visual Basic exit module is already
registered and another Visual Basic exit module is created. In order to
avoid this situation, you must unregister one of the Visual Basic exit
modules, by means of the command-line instruction 'regsvr32 /u
filename.dll', where filename.dll is the name of the Visual Basic exit
module which is not intended to be made active.
Note for Windows NT 4.0 In Windows NT 4.0, you must use the value
c9e6e410-7364-11d0-8816-00a0c903b83c for the CLSID when implementing
ICertExit. Also, the ProgID for a class implementing ICertExit must conform
to a naming convention. Specifically, the ProgID must be of the form:
"CertificateAuthority.Exit"
For example, in C++, the following can be used in the DECLARE_REGISTRY macro
of a class (CMyCertExitModule) that implements ICertExit:
DECLARE_REGISTRY(
CMyCertExitModule,
L"CertificateAuthority.Exit.1",
L"CertificateAuthority.Exit",
IDS_CERTEXITMODULE_DESC,
THREADFLAGS_BOTH)
For the above sample, the IDS_CERTEXITMODULE_DESC value is an
application-specific identifier in the resource file (.rc) for a string
which describes the class.
Exit modules written in Visual Basic are not supported in versions of
Windows NT 4.0 prior to SP6. This limitation has been removed for Windows NT
4.0 SP6, Windows 2000, and later.
Note for Windows 2000 and later Only a stand-alone certification authority
should replace the Microsoft-provided policy or exit modules; when running
an enterprise certification authority, the use of Microsoft-provided policy
and exit modules is strongly recommended. The provided policy module may be
replaced when running a stand-alone certification authority. Custom exit
modules can always be used in addition to the Microsoft-provided exit
module.
In Windows 2000 and later, implementers of ICertExit should also implement
ICertManageModule. Additionally, the ProgID for a class implementing
ICertExit must conform to a naming convention. Specifically, the ProgID must
be of the form:
"MyApp.Exit"
where MyApp is a specifier identifying the application. For example, in C++,
the following could be used in the DECLARE_REGISTRY macro of a class
(CMyCertExitModule) which implements ICertExit:
DECLARE_REGISTRY(
CMyCertExitModule,
L"MyCode.Exit.1",
L"MyCode.Exit",
IDS_CERTEXITMODULE_DESC,
THREADFLAGS_BOTH)
For the above sample, the IDS_CERTEXITMODULE_DESC value is an
application-specific identifier in the resource file (.rc) for a string
which describes the class.
the ICertManageModule interfaces. I then register the dll. But I can't get
the dll to show up in the 'Exit Module' tab of the CA mmc snapin app.
My exit module is a C++ ATL app.
What more do I need to do?
Thanks,
Steve
P.S. I am following instructions provided by the platform SDK documentation:
Remarks
No more than one Visual Basic exit module may be registered on the
Certificate Services server at one time. If more than one Visual Basic exit
module is registered, the Certification Authority MMC snap-in, Certificate
Services application, or certutil command line program may produce errors.
Note that the Microsoft Visual Basic development environment automatically
registers a DLL when it is successfully built. As a result, you may
encounter this situation when one Visual Basic exit module is already
registered and another Visual Basic exit module is created. In order to
avoid this situation, you must unregister one of the Visual Basic exit
modules, by means of the command-line instruction 'regsvr32 /u
filename.dll', where filename.dll is the name of the Visual Basic exit
module which is not intended to be made active.
Note for Windows NT 4.0 In Windows NT 4.0, you must use the value
c9e6e410-7364-11d0-8816-00a0c903b83c for the CLSID when implementing
ICertExit. Also, the ProgID for a class implementing ICertExit must conform
to a naming convention. Specifically, the ProgID must be of the form:
"CertificateAuthority.Exit"
For example, in C++, the following can be used in the DECLARE_REGISTRY macro
of a class (CMyCertExitModule) that implements ICertExit:
DECLARE_REGISTRY(
CMyCertExitModule,
L"CertificateAuthority.Exit.1",
L"CertificateAuthority.Exit",
IDS_CERTEXITMODULE_DESC,
THREADFLAGS_BOTH)
For the above sample, the IDS_CERTEXITMODULE_DESC value is an
application-specific identifier in the resource file (.rc) for a string
which describes the class.
Exit modules written in Visual Basic are not supported in versions of
Windows NT 4.0 prior to SP6. This limitation has been removed for Windows NT
4.0 SP6, Windows 2000, and later.
Note for Windows 2000 and later Only a stand-alone certification authority
should replace the Microsoft-provided policy or exit modules; when running
an enterprise certification authority, the use of Microsoft-provided policy
and exit modules is strongly recommended. The provided policy module may be
replaced when running a stand-alone certification authority. Custom exit
modules can always be used in addition to the Microsoft-provided exit
module.
In Windows 2000 and later, implementers of ICertExit should also implement
ICertManageModule. Additionally, the ProgID for a class implementing
ICertExit must conform to a naming convention. Specifically, the ProgID must
be of the form:
"MyApp.Exit"
where MyApp is a specifier identifying the application. For example, in C++,
the following could be used in the DECLARE_REGISTRY macro of a class
(CMyCertExitModule) which implements ICertExit:
DECLARE_REGISTRY(
CMyCertExitModule,
L"MyCode.Exit.1",
L"MyCode.Exit",
IDS_CERTEXITMODULE_DESC,
THREADFLAGS_BOTH)
For the above sample, the IDS_CERTEXITMODULE_DESC value is an
application-specific identifier in the resource file (.rc) for a string
which describes the class.