locked
[SOLVED]CredentialProvider example does not work on 64bit windows RRS feed

  • Question

  • Hi all

    I try to do to work the usual SampleHardwareEventCredentialProvider example on Windows 7x64. I use the Visual Studio 2012.

    I build and register in the Registry my library in two options: 32 and 64 bits. All keys (in HKCU and HKLM) are available into 32 and 64 bit register's versions, I'am checked it. In process of registration I used 32 and further 64 bit cmd.exe version with use of usual *.reg file from the sample.

    All necessary the runtime dependences for my library I satisfied (even linked with the /MT options).

    For check of the fact of loading of my library by LogonUI.exe I used the "Process Monitor" utility. From the "Process Monitor" utility I see that my registry keys was correctly enumerated and was attempt to load my library.

    The LogonUI.exe tries to load the 32 bit version of my library, but, for unclear reason, the "Load Image" syscall doesn't become, i.e. I can't see this call from the log of "Process Monitor" utility.

    It is very strange because I see, for example, that loading of a "standard" plug-in of "C:\Windows\System32\SmartcardCredentialProvider.dll" (and others Credential Providers) takes place successfully:

    but, my library is failed:

    Though, the same 32 bit's library perfectly works on the Windows 7 32 bit (I can see the "Load Image" operation).

    Somebody can help me? What a problem? Because I'm there are no thoughts.. :(


    • Edited by kuzulis Monday, March 31, 2014 12:46 PM
    Sunday, March 30, 2014 6:02 PM

All replies

  • Ohh... An problem now is resolved. :)

    Need just build the 64-bit instance of the credential provider library, and then, register this 64-bit version via 32-bit environment..

    I.e. in my case needto do (for example):

    1. Build the 64-bit version of the credential provider (*.dll)

    2. Run the 32-bit version of the cmd.exe (from the /System32 directory!!!)

    3. Specify path to the *.reg file and execute it.

    PS: In my case, I do not do copy the credential provider's dll to the /system32! I just specify a path to the my credential provider in *.reg file, e.g.:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{75A22DF0-B81D-46ed-B119-CD30507BD615}]
    @="SampleHardwareEventCredentialProvider"
    
    [HKEY_CLASSES_ROOT\CLSID\{75A22DF0-B81D-46ed-B119-CD30507BD615}]
    @="SampleHardwareEventCredentialProvider"
    
    [HKEY_CLASSES_ROOT\CLSID\{75A22DF0-B81D-46ed-B119-CD30507BD615}\InprocServer32]
    @="d:\\WORK\\Projects\\SampleHardwareEventCredentialProvider.dll"
    "ThreadingModel"="Apartment"
    
    

    :)

    Monday, March 31, 2014 12:44 PM