Il semble y avoir deux façons. L'API Microsoft est appelé IRASrv et est documenté ici:
http://msdn.microsoft.com/en-us/library/cc240176(PROT.10).aspx
Une autre façon est d'appeler simplement msra.exe. avec mot de passe et paramètres novices (par exemple, msra.exe/saveasfile testfile thepassword). Cependant, cela invite l'utilisateur avec la boîte de dialogue de mot de passe.
Voici un exemple de code pour appeler l'interface IRASrv et générer une chaîne de connexion d'assistance à distance.
COSERVERINFO si; ::ZeroMemory(&si, sizeof(si));
MULTI_QI qi; ::ZeroMemory(&qi, sizeof(qi));
HRESULT hr = S_OK;
BSTR bstrUserName = SysAllocString(L"jon");
BSTR bstrDomainName = SysAllocString(L"");
BSTR bstrPasswordStr = SysAllocString(L"testpass");
// Get the security information entered by the user
_bstr_t bstrUser(bstrUserName);
_bstr_t bstrDomain(bstrDomainName);
_bstr_t bstrPassword(bstrPasswordStr);
// Set AuthIdentity
SEC_WINNT_AUTH_IDENTITY_W AuthIdentity = {
(unsigned short*)bstrUserName,
bstrUser.length(),
(unsigned short*)bstrDomainName,
bstrDomain.length(),
(unsigned short*)bstrPasswordStr,
bstrPassword.length(),
SEC_WINNT_AUTH_IDENTITY_UNICODE
};
COAUTHINFO AuthInfo = {
RPC_C_AUTHN_WINNT,
RPC_C_AUTHZ_DEFAULT,
NULL,
RPC_C_AUTHN_LEVEL_PKT_PRIVACY, // The authentication level used
RPC_C_IMP_LEVEL_IMPERSONATE,
(COAUTHIDENTITY*)&AuthIdentity,
EOAC_NONE
};
si.pAuthInfo = &AuthInfo;
si.pwszName = bstrMachineName;
qi.pIID = &(__uuidof(RAServerLib::IRASrv));
hr = ::CoCreateInstanceEx(
__uuidof(RAServerLib::RASrv), NULL, CLSCTX_REMOTE_SERVER,
&si, 1, &qi);
if (FAILED(hr))
{
return hr;
}
CComPtr<RAServerLib::IRASrv> prasrv;
hr = qi.pItf->QueryInterface(__uuidof(RAServerLib::IRASrv), (void**)&prasrv);
if (FAILED(hr))
{
return hr;
}
LPWSTR pstr=NULL;
hr = prasrv->raw_GetNoviceUserInfo(&pstr);
if (FAILED(hr))
{
return hr;
}
pstr contains the Remote Assistance Connection String (type 2)
Avez-vous des références sur l'utilisation de la "chaîne de connexion 2" pour lancer une connexion à distance? Le lien que vous avez publié sur MSDN contient de bonnes informations, mais ce n'est pas si simple. – Philip
Consultez la [Spécification du protocole d'initiation de l'assistance à distance] (http://msdn.microsoft.com/fr-fr/library/cc240115 (v = prot.10) .aspx) En regardant le code que j'ai fait pour cela, J'ai extrait l'identifiant et le KH, et les utilise pour créer une chaîne de requête de style XP. –