Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получение данных системного реестра через RDP / 8 сообщений из 8, страница 1 из 1
10.10.2019, 14:25
    #39874605
Fockewolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
Добрый день, необходимо получить данные системного реестра с локальной машины с удаленного рабочего стола (подключение по RDP). Доступ к подсети происходит через VPN, потом происходит подключение через RDP на виртуалку. Пробовал:

Код: c#
1.
2.
RegistryKey baseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machineName);            
RegistryKey key = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Cryptography");



В этом случае получаю исключение "System.IO.IOException: 'The network path was not found." Так же не могу с удаленного рабочего стола по имени пропинговать свой компьютер.

Пробовал еще так:
Код: c#
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.
ManagementScope ms = new ManagementScope();
ms.Path.Server = machineName;
ms.Path.NamespacePath = "root\\default";            
ms.Options.EnablePrivileges = true;
ms.Connect();
ManagementClass mc = new ManagementClass("stdRegProv");
mc.Scope = ms;
ManagementBaseObject mbo;
mbo = mc.GetMethodParameters("EnumValues");
mbo.SetPropertyValue("sSubKeyName", @"SOFTWARE\Microsoft\Cryptography");
string[] subkeys = (string[])mc.InvokeMethod("EnumValues", mbo, null).Properties["sNames"].Value;

ManagementBaseObject mboS;
string keyValue = String.Empty;

foreach (string strKey in subkeys)
{
    if (strKey.Contains("MachineGuid"))
    {
       mboS = mc.GetMethodParameters("GetStringValue");
       mboS.SetPropertyValue("sSubKeyName", @"SOFTWARE\Microsoft\Cryptography");
       mboS.SetPropertyValue("sValueName", strKey);

       keyValue = mc.InvokeMethod("GetStringValue", mboS, null).Properties["sValue"].Value.ToString();
       return keyValue;
    }                
}


В этом случае получаю исключение при ms.Connect(): The RPC server is unavailable
Хотя службы работают и там и там.

Как можно достучаться до реестра на локальной машине? Интересует получение MachineGuid локальной машины, с которой я захожу по RDP.
...
Рейтинг: 0 / 0
10.10.2019, 14:59
    #39874641
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
По делу ничего не скажу, но, только это, по-моему, WMI а вовсе не RDP.
...
Рейтинг: 0 / 0
10.10.2019, 15:12
    #39874660
Fockewolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
WMI, я имел в виду. что код выполняется с машины, к которой я, как пользователь, подключаюсь по RDP
...
Рейтинг: 0 / 0
10.10.2019, 23:48
    #39874944
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
FockewolfВ этом случае получаю исключение "System.IO.IOException: 'The network path was not found." Так же не могу с удаленного рабочего стола по имени пропинговать свой компьютер.

Ничего удивительного
...
Рейтинг: 0 / 0
11.10.2019, 09:53
    #39874999
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
Fockewolf
Код: c#
1.
RegistryKey baseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machineName);            


FockewolfWMI, я имел в виду. что код выполняется с машины, к которой я, как пользователь, подключаюсь по RDP

В этом случае надо нe OpenRemoteBaseKey, а OpenBaseKey
...
Рейтинг: 0 / 0
11.10.2019, 10:16
    #39875016
Fockewolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
Хорошо, задача в следующем. Как можно получить MachineID клиента, который подключился по RDP к удаленному рабочему столу? Нужно получить это с программного обеспечения , которое будет работать на сервере, куда подключаются клиенты. Не хранятся ли эти данные на сервере. Так как, насколько я понял, зачитать эти данные из системного реестра клиента будет проблематично: может быть включен Firewall, конечный пользователь не обладает правами на чтение реестра, могут быть не запущены службы RCP на клиентских машинах и т.д.
...
Рейтинг: 0 / 0
11.10.2019, 11:16
    #39875049
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
Fockewolf,

Для начала, как вообще можно получить информацию если

Fockewolfкоторое будет работать на сервере, куда подключаются клиенты.
...
может быть включен Firewall, конечный пользователь не обладает правами на чтение реестра, могут быть не запущены службы RCP на клиентских машинах и т.д.

На сервере запускается некая (написанная самостоятельно) служба, которая запускается под именем учетной записи, которой даны права локального админа на рабочих станциях сети. Подчеркиваю. Именно так, а не под правами администратора домена. Эта служба будет запрашивать информацию с рабочих станций, а пользователи через каких-то самостоятельно написанных клиентов будут только сообщать ей, что они хотят узнать.

Доменными глобальными политиками должны быть отключены всякие брандмауэры, включен удаленный реестр, разрешен DCOM, включено WMI.

Сетевики должны обеспечить доступ к клиентам по портам 135, 139, 445 по маршруту от сервера ко всем клиентским машинам. Не знаю как это делается, я просто озадачил сетевиков и они это сделали.

Теперь поднимаем на машинах WINRM

После этого у нас появляется возможность выполнять на удаленной машине любые команды и программы.

И вот, наконец, с помощью Process.Start выполняем там команду netstat -aon и смотрим, кто слушает порт
3389 . Если шаловливые админы не изменили дефолтный RDP-порт на какой-то другой то это решит проблему?

===============
А может Вам достаточно знать КТО подключился по RDP? Тогда настройку WINRM можно не делать. Данные об этом можно получить в удаленном реестре
...
Рейтинг: 0 / 0
11.10.2019, 11:43
    #39875068
Fockewolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных системного реестра через RDP
Cat2,

Спасибо большое за хороший ответ!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получение данных системного реестра через RDP / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]