Bonjour à tous, nous avons un petit soucis.
Nous avons une ferme de serveurs RDS (5) et suite à une succession de requêtes et cas particuliers, nous avons décidé de développer une couche de surveillance/action de ces serveurs/sessions/applications lancées/....
On développe avec code::blocks (bcc5.5 /gcc) une appli en utilisant le wtsapi32.
Nous n'arrivons pas à nous connecter à distance par la commande WTSOpenServer, seule la connexion locale fonctionne, on a essayé pas mal de chose (syntaxe de la string, manipulations base deregistre, ...) rien n'y fait.

Toute idée est la bienvenue.

Merci à vous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//code de test api wtsapi32.h/..

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wtsapi32.h>
#include <iostream.h>
//#include <winternl.h>


int main()
{
    HANDLE hServer = NULL;
    DWORD count;
    PWTS_SESSION_INFO sessions = NULL;

    wprintf(L"@rdstest 08/2012 v1.0\n");

    //---------------------

    hServer = WTSOpenServer('\0'); //OK
    //hServer = WTSOpenServer(L"SVR-RDS4"); //KO
    //hServer = WTSOpenServer(L"SVR-RDS4.rd34.ml"); //KO
    //hServer = WTSOpenServer("SVR-RDS4"); //KO
    //hServer = WTSOpenServer("SVR-RDS4.rd34.ml"); //KO
    //hServer = WTSOpenServer(L"\\\\SVR-RDS4"); //KO
    //hServer = WTSOpenServer(L"\\\\SVR-RDS4.rd34.ml"); //KO
    //hServer = WTSOpenServer(L"\\SVR-RDS4"); //KO
    //hServer = WTSOpenServer(L"\\SVR-RDS4.rd34.ml"); //KO

    if (hServer == NULL)
    {
      //cout<<endl<<"ERR: openserver handle";
       wprintf (L"\nWTSOpenServer fails, hs=null");
       goto error;
    }
    wprintf (L"\nconnected to server");

    if (WTSEnumerateSessions(hServer, 0, 1, &sessions, &count) == 0)
    {
        wprintf (L"\nWTSEnumerateSessions fails count=%i",count);
        goto error2;
    }
    wprintf (L"\nNb cx=%lu",count);

error2:
    wprintf (L"\nclose connection");
    WTSCloseServer(hServer);
    wprintf (L"\nconnection closed");
    return 0;


error:
    return 1;
}