none
Windows Service and COMVisible class RRS feed

  • Discussion générale

  • J'ai fait un service Window en C# et mis un classe COMvisible. Tout fonctionne correctement quand je modifie le service pour le démarrer en application standard. Mais quand je demarre l'application en tant que service, la class COM n'est pas accessible par mon client C++

    Fonction pour initialiser le composant COM :

    private void InitialiseCOM()
            {
                System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\testService.txt", true);
                m_RegComService = new RegistrationServices();
                try
                {
                    m_ComCookie = m_RegComService.RegisterTypeForComClients(typeof(SpeechRecognitionSyncTask),
                                                                            RegistrationClassContext.LocalServer,
                                                                            RegistrationConnectionType.MultipleUse);
    
                    file.WriteLine("GUID:" + typeof(SpeechRecognitionSyncTask).GUID.ToString() + " cookie:" + m_ComCookie.ToString());
                }
                catch (ArgumentException e)
                {
                    file.WriteLine(e.Message);
                }
    
                file.WriteLine("InitialiseCOM");
                file.Close();
            }

    Code utilisé pour accéder à la classe COm par mon client  C++ :

    CoInitialize(NULL);
    
    	{
    		CComPtr<ISpeechRecognitionSyncTask> spCalc;
    		HRESULT hr = spCalc.CoCreateInstance(__uuidof(SpeechRecognitionSyncTask), 0, CLSCTX_LOCAL_SERVER);
    
    		if(hr == S_OK)
    		{
    	           long result = 0;
    		}
    	}
    
    	LPOLESTR lpolestr;
    	StringFromCLSID(__uuidof(SpeechRecognitionSyncTask), &lpolestr);
    	wprintf_s(L"%s", lpolestr);
    	CoTaskMemFree(lpolestr);
    
    	CoUninitialize();

    Jusqu'à maintenant j'ai essayé à peu près toutes les configurations du CLSCTX pour le client et le serveur. J'ai aussi essayer de démarrer le service avec différent utilisateur de même quand tant que Système locale

    • Modifié KevenL mercredi 5 décembre 2012 16:13 Traduction
    • Type modifié Aurel Bera lundi 10 décembre 2012 09:38
    mardi 4 décembre 2012 14:37

Toutes les réponses