I wish bloody people would use const sometimes, particluarly when pointers are involved !!!!
Establishing COM client identity
12 01 2007Establishing client identity for COM object activation and subsequent method calls is pretty easy right? Right, the identity used by default is that of the calling thread or process.
I had a need for a COM client to use a different identity for [remote] COM object activation and method calls than that of the host client process. There is a couple of APIs which can be used to accomplish this:-
- CoInitializeSecurity(…)
- CoSetProxyBlanket(…)
I chose the CoInitializeSecurity way, and so set the parameters appropriately which involves the following structs:-
- SOLE_AUTHENTICATION_LIST
- SOLE_AUTHENTICATION_INFO
- SEC_WINNT_AUTH_IDENTITY
Having populated these structures and called CoInitializeSecurity, I kept getting E_INVALIDARG, the parameters where definitely correct, I couldn’t figure it out.
Eventually, after much head stratching, I found the problem. The SEC_WINNT_AUTH_IDENTITY structure is available in ANSI and UNICODE varieties, I happened to be using the ANSI version via the compilers macro preprocessor – since the client application was an ANSI build.
I changed my code to use the UNICODE version, SEC_WINNT_AUTH_IDENTITY_W, compiled and it worked fine.
Seems that using the ANSI version of SEC_WINNT_AUTH_IDENTITY when calling CoInitializeSecurity just doesn’t work, for some undoubtedly arcane reason, on the other hand perhaps it’s just a bug!
Comments : Leave a Comment »
Categories : Software Development
Ch-Ch-Changes
1 01 2007Err so whats happened to WDevs then, it’s gone all subtexty
And skins?
Comments : Leave a Comment »
Categories : Technology
RSS - Posts
My