Bonjour,

J'utilise l'API WinReg pour énumérer des clés de registres sur une machine distante. Cela fonctionne correctement pour certaines clés mais pas pour d'autres.

Tout d'abord, une vue du registre distant :
Nom : RemoteReg.png
Affichages : 255
Taille : 60,6 Ko

Je tente d'énumérer les 2 clés suivantes
  • SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\EventCollector\\ConfigurationModes
  • SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\EventCollector\\Subscriptions

Pour la 1ere clé (ConfigurationModes), j'ai un résultat correct et les 4 sous clés sont correctement affichées. Par contre pour la 2eme clé (Subscriptions), je n'ai pas de résultat. Il ne voit tout simplement pas les 2 sous clés (celles que j'ai "un peu" masquées sur la copie d'écran)

Ci dessous le programme de test écrit en C/C++ avec Qt
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
58
59
60
61
62
63
64
65
66
67
68
	const WCHAR * remote_host = TEXT("remote-host");
	const WCHAR * remote_folder = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\EventCollector\\Subscriptions");

	// open the HKLM remote registry
HKEY hkey_remote;
	LONG res = RegConnectRegistry(remote_host,
											HKEY_LOCAL_MACHINE,
											&hkey_remote);
	if(res != ERROR_SUCCESS)
	{
		// something is wrong
		WINDOWS("RegConnectRegistry()", res);
		return;
	}

	// open the HKLM remote registry
HKEY hkey_folder;
	res = RegOpenKeyEx(hkey_remote,
							 remote_folder,
							 0,
							 KEY_READ,
							 &hkey_folder);
	if(res != ERROR_SUCCESS)
	{
		// something is wrong
		WINDOWS("RegOpenKeyEx()", res);
		return;
	}

	DWORD index = 0;
	for(;;)
	{
		WCHAR Data[256];
		DWORD SizeData = sizeof(Data) / sizeof(Data[0]);
		long res = RegEnumKeyEx(hkey_folder,
										index,
										Data,
										&SizeData,
										NULL,
										NULL,
										NULL,
										NULL);
		if(res != ERROR_SUCCESS)
		{
			// something is wrong, probably the end of the list
			WINDOWS("RegEnumKeyEx()", res);
			break;
		}

		// add the key to the list
		INFO("Data [%S]", Data);
		index++;
	}

	// close folder
	res = RegCloseKey(hkey_folder);
	if(res != ERROR_SUCCESS)
	{
		// something is wrong
		WINDOWS("RegCloseKey()", res);
	}

	res = RegCloseKey(hkey_remote);
	if(res != ERROR_SUCCESS)
	{
		// something is wrong
		WINDOWS("RegCloseKey()", res);
	}
Je n'ai pas l'impression que ce soit lié à un problème de droits car les 2 clés (Subscriptions et ConfigurationModes) ont exactement les même ACL et j'ai les droits (au moins en lecture sur ces clés)
La machine locale (qui exécute le programme) : Windows 7 pro
La machine distante : Windows server 2012
Les 2 machines sont dans le même domaine AD

J'avoue que je commence à être en panne d'idées, si quelqu'un avait une idée de génie ...
Merci d'avance