SDK: 32-bit legacy programs interoperating with the 64-bit client using COM

Published 10-16-2018 05:04 PM 153 Views
Microsoft
First published on MSDN on Nov 28, 2012

Update @ 2013-06-21: CU2 has been relreased and has a fix for the CPApplet issues. Please reference my latest post about this fix.


Update @ 2013-06-05: A fix for the CPApplet interfaces not being accessible from 32-bit processes will be released as part of Configuration Manager 2012 SP1 CU2. I'll write a full blog post once CU2 releases.


Update @ 2013-03-21: We are aware of an issue with CPApplet interfaces not being accessible from 32-bit processes. Once I have something to share regarding a solution for this I will post about it here.


Configuration Manager 2012 for the first time offers a 64-bit native client. This will create problems if you’re using a 32-bit native application that depends on COM interfaces defined by the older 32-bit client. The most likely issue would be your applications failing with a 0x80040154 (class not registered) error. Fortunately, you don’t need to despair or rebuild your programs for 64-bit (or “Any” if .NET).


We have shipped a set of compatibility shims as part of the program bundle that will allow 32-bit programs to invoke COM methods against the 64-bit client. You will need to install the 32BitCompat.msi that is part of the CD. It can be found under SMSSETUP\BIN\X64. You can even deploy this to your 64-bit clients as part of an application deployment. Make sure you scope this to run only on 64-bit systems as it will fail to install on 32-bit systems.


The following are shimmed out to allow 32-bit interoperability:



  • ccmcca.dll

  • ccmcisdk.dll

  • ccmctm.dll

  • ccmexec.exe

  • ccmproxy.dll

  • ciagent.dll

  • contentaccess.dll

  • cpapplet.dll

  • dcmagent.dll

  • execmgr.dll

  • rebootcoord.dll

  • rtconfig.dll

  • scanagent.dll

  • sched.dll

  • smsclient.dll

  • smssha.dll

  • srcupdatemgr.dll

  • srvwinmgr.dll

  • statemessage.dll

  • uiresource.dll

  • updatesdeployment.dll

  • updatesstore.dll


Note: This is only required if you’re using 32-bit native applications for COM interop. 64-bit native applications, or .NET applications compiled as “Any” do not require this to be installed.

%3CLINGO-SUB%20id%3D%22lingo-sub-273169%22%20slang%3D%22en-US%22%3ESDK%3A%2032-bit%20legacy%20programs%20interoperating%20with%20the%2064-bit%20client%20using%20COM%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-273169%22%20slang%3D%22en-US%22%3E%0A%20%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3DUTF-8%22%20%2F%26gt%3B%3CSTRONG%3E%20First%20published%20on%20MSDN%20on%20Nov%2028%2C%202012%20%3C%2FSTRONG%3E%20%3CBR%20%2F%3E%3CP%3E%3CEM%3E%20Update%20%40%202013-06-21%3A%20CU2%20has%20been%20relreased%20and%20has%20a%20fix%20for%20the%20CPApplet%20issues.%20Please%20reference%20my%20%3CA%20href%3D%22http%3A%2F%2Fblogs.msdn.com%2Fb%2Fameltzer%2Farchive%2F2013%2F06%2F21%2Fsdk-cu2-has-been-released-includes-fix-for-cpapplet-com-interfaces-not-working-on-64-bit-when-called-from-32-bit-programs.aspx%22%20title%3D%22my%20latest%20post%20about%20this%20fix%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%20latest%20post%20about%20this%20fix.%20%3C%2FA%3E%20%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CEM%3E%20Update%20%40%202013-06-05%3A%20A%20fix%20for%20the%20CPApplet%20interfaces%20not%20being%20accessible%20from%2032-bit%20processes%20will%20be%20released%20as%20part%20of%20Configuration%20Manager%202012%20SP1%20CU2.%20I'll%20write%20a%20full%20blog%20post%20once%20CU2%20releases.%20%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CEM%3E%20Update%20%40%202013-03-21%3A%20We%20are%20aware%20of%20an%20issue%20with%20CPApplet%20interfaces%20not%20being%20accessible%20from%2032-bit%20processes.%20Once%20I%20have%20something%20to%20share%20regarding%20a%20solution%20for%20this%20I%20will%20post%20about%20it%20here.%20%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EConfiguration%20Manager%202012%20for%20the%20first%20time%20offers%20a%2064-bit%20native%20client.%20This%20will%20create%20problems%20if%20you%E2%80%99re%20using%20a%2032-bit%20native%20application%20that%20depends%20on%20COM%20interfaces%20defined%20by%20the%20older%2032-bit%20client.%20The%20most%20likely%20issue%20would%20be%20your%20applications%20failing%20with%20a%200x80040154%20(class%20not%20registered)%20error.%20Fortunately%2C%20you%20don%E2%80%99t%20need%20to%20despair%20or%20rebuild%20your%20programs%20for%2064-bit%20(or%20%E2%80%9CAny%E2%80%9D%20if%20.NET).%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EWe%20have%20shipped%20a%20set%20of%20compatibility%20shims%20as%20part%20of%20the%20program%20bundle%20that%20will%20allow%2032-bit%20programs%20to%20invoke%20COM%20methods%20against%20the%2064-bit%20client.%20You%20will%20need%20to%20install%20the%2032BitCompat.msi%20that%20is%20part%20of%20the%20CD.%20It%20can%20be%20found%20under%20SMSSETUP%5CBIN%5CX64.%20You%20can%20even%20deploy%20this%20to%20your%2064-bit%20clients%20as%20part%20of%20an%20application%20deployment.%20Make%20sure%20you%20scope%20this%20to%20run%20only%20on%2064-bit%20systems%20as%20it%20will%20fail%20to%20install%20on%2032-bit%20systems.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EThe%20following%20are%20shimmed%20out%20to%20allow%2032-bit%20interoperability%3A%3C%2FP%3E%3CBR%20%2F%3E%3CUL%3E%3CBR%20%2F%3E%3CLI%3Eccmcca.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eccmcisdk.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eccmctm.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eccmexec.exe%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eccmproxy.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eciagent.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Econtentaccess.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Ecpapplet.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Edcmagent.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eexecmgr.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Erebootcoord.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Ertconfig.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Escanagent.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Esched.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Esmsclient.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Esmssha.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Esrcupdatemgr.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Esrvwinmgr.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Estatemessage.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Euiresource.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eupdatesdeployment.dll%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3Eupdatesstore.dll%3C%2FLI%3E%3CBR%20%2F%3E%3C%2FUL%3E%3CBR%20%2F%3E%3CP%3ENote%3A%20This%20is%20only%20required%20if%20you%E2%80%99re%20using%2032-bit%20native%20applications%20for%20COM%20interop.%2064-bit%20native%20applications%2C%20or%20.NET%20applications%20compiled%20as%20%E2%80%9CAny%E2%80%9D%20do%20not%20require%20this%20to%20be%20installed.%3C%2FP%3E%0A%20%0A%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-273169%22%20slang%3D%22en-US%22%3EFirst%20published%20on%20MSDN%20on%20Nov%2028%2C%202012%20Update%20%40%202013-06-21%3A%20CU2%20has%20been%20relreased%20and%20has%20a%20fix%20for%20the%20CPApplet%20issues.%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-273169%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EClient%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Econfigmgr%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EConfiguration%20Manager%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ESDK%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Version history
Last update:
‎Oct 16 2018 05:04 PM
Updated by: