The service is not registered when you build an ATL service in Visual C++ (167927)



The information in this article applies to:

  • The Microsoft Active Template Library (ATL) 2.0
  • The Microsoft Active Template Library (ATL) 2.1
  • The Microsoft Active Template Library (ATL) 3.0
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET (2003)
  • Microsoft Visual C++ .NET (2002)

This article was previously published under Q167927

SYMPTOMS

When you build an ATL service, using the AppWizard, the COM objects are registered, but the service does not appear in the Control Panel's list of services.

CAUSE

The Wizard creates a custom build rule for self-registration. The rule uses the /RegServer switch instead of the /Service switch.

RESOLUTION

The Wizard adds the following custom build command:
   "$(TargetPath)" /RegServer
				
Change the build command to:
   "$(TargetPath)" /Service
				
To change the command, bring up the Project Settings dialog box, click the Custom Build tab, and edit the command in "Build command(s):".
NOTE: If you are using Visual Studio .NET or Visual C++ 2005, the Wizard adds the following "Post-Build Events" command line under the "Build Events" property page:

"$(TargetPath)" /RegServer

Change the build command to:

"$(TargetPath)" /Service

STATUS

This behavior is by design.

MORE INFORMATION

Because debugging local servers is easier than debugging services, most people prefer the default to be /RegServer. Once you have completed testing the EXE as a local server, you can either change the custom build step or run the EXE with /Service.

(c) Microsoft Corporation 1997, All Rights Reserved. Contributions by Chuck Bell, Microsoft Corporation.

Modification Type:MajorLast Reviewed:1/10/2006
Keywords:kbtshoot kbLocalSvr kbprb kbRegistry kbServer kbService KB167927 kbAudDeveloper