Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 16.07.2011
Сообщений: 40
1

Подключение к удаленному компьютеру через WMI

19.01.2012, 22:48. Показов 3474. Ответов 1
Метки нет (Все метки)

вот код, который использую:

C#
1
2
3
4
5
            ConnectionOptions options = new ConnectionOptions();
            options.Username = "u";
            options.Password = "123";
            scope = new ManagementScope("\\\\PHILKA\\root\\CIMV2", options);
            scope.Connect();
выдает ошибку "отказано в доступе". компы не в домене, если это важно.
Што не так?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2012, 22:48
Ответы с готовыми решениями:

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

Подключение к удаленному компьютеру
Добрый день. Стоит такая задача. Необходимо по заданному ip-шнику подключиться к удаленному компу...

Подключение к удаленному компьютеру через vpn
Добрый день, есть роутер ASUS RT-N10U с VPN сервером, устанавливаю соединение с другого...

Подключение к удалённому компьютеру через интернет
Подарил сестре нетбук больше полугода назад, предварительно установив туда Ubuntu. Она с ним...

1
0 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 14
24.06.2014, 17:13 2
Помогите пожалуйста с программой.
Необходимо получить информацию о модели монитора на удаленном компьютере.

Вот код подключения:
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
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
namespace ReadRegistry
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
 
        private List<string> ReadRemoteRegistryusingWMI(string machineName)
        {
            List<string> programs = new List<string>();
 
            ConnectionOptions connectionOptions = new ConnectionOptions();
            connectionOptions.Username = textBox1.Text;
            connectionOptions.Password = textBox2.Text;
           
 
            //ManagementScope scope = new ManagementScope("\\\\" + machineName + "\\root\\CIMV2", connectionOptions);
            ManagementScope scope = new ManagementScope("\\\\" + machineName + "\\root\\DEFAULT", connectionOptions);
            scope.Connect();
 
            string softwareRegLoc = @"Software\Microsoft\Windows\CurrentVersion\Uninstall";
 
            ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
            ManagementBaseObject inParams = registry.GetMethodParameters("EnumKey");
            inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
            inParams["sSubKeyName"] = softwareRegLoc;
 
            // Read Registry Key Names 
            ManagementBaseObject outParams = registry.InvokeMethod("EnumKey", inParams, null);
            string[] programGuids = outParams["sNames"] as string[];
 
            foreach (string subKeyName in programGuids)
            {
                inParams = registry.GetMethodParameters("GetStringValue");
                inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
                inParams["sSubKeyName"] = softwareRegLoc + @"\" + subKeyName;
                inParams["sValueName"] = "DisplayName";
                // Read Registry Value 
                outParams = registry.InvokeMethod("GetStringValue", inParams, null);
 
                if (outParams.Properties["sValue"].Value != null)
                {
                    string softwareName = outParams.Properties["sValue"].Value.ToString();
                    programs.Add(softwareName);
                }
            }
 
            return programs;
        }
 
        private List<string> ReadMonitorusingWMI(string machineName)
        {
            string sSerial = "";
            string sModel = "";
            //Open the Display Reg-Key
 
            List<string> programs = new List<string>();
 
            ConnectionOptions connectionOptions = new ConnectionOptions();
            connectionOptions.Username = textBox1.Text;
            connectionOptions.Password = textBox2.Text;
           
 
            ManagementScope scope = new ManagementScope("\\\\" + machineName + "\\root\\DEFAULT", connectionOptions);
            scope.Connect();
 
            string softwareRegLoc = @"SYSTEM\CurrentControlSet\Enum\DISPLAY";
 
            ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
            ManagementBaseObject inParams = registry.GetMethodParameters("EnumKey");
            inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
            inParams["sSubKeyName"] = softwareRegLoc;
 
            // Read Registry Key Names 
            ManagementBaseObject outParams = registry.InvokeMethod("EnumKey", inParams, null);
            string[] programGuids = outParams["sNames"] as string[];
 
 
            foreach (string subKeyName in programGuids)
            {
                inParams = registry.GetMethodParameters("EnumKey");
                inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
                inParams["sSubKeyName"] = softwareRegLoc + @"\" + subKeyName;
 
                // Read Registry Key Names 
                outParams = registry.InvokeMethod("EnumKey", inParams, null);
                string[] programGuids2 = outParams["sNames"] as string[];
 
                foreach (string subKeyNameNext in programGuids2)
                {
                    inParams = registry.GetMethodParameters("EnumKey");
                    inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
                    inParams["sSubKeyName"] = softwareRegLoc + @"\" + subKeyName + @"\" + subKeyNameNext;
 
                    // Read Registry Key Names
                    outParams = registry.InvokeMethod("EnumKey", inParams, null);
                    string[] programGuids3 = outParams["sNames"] as string[];
 
                    //Check if Monitor is active
                    if (programGuids3.Contains("Control"))
                    {
                        if (programGuids3.Contains("Device Parameters"))
                        {
                            inParams = registry.GetMethodParameters("GetBinaryValue");
                            inParams["hDefKey"] = 0x80000002;//HKEY_LOCAL_MACHINE
                            inParams["sSubKeyName"] = softwareRegLoc + @"\" + subKeyName + @"\" + subKeyNameNext + @"\" + "Device Parameters";
                            inParams["sValueName"] =  "EDID";
 
                            // Read Registry Binary Value
                            outParams = registry.InvokeMethod("GetBinaryValue", inParams, null);
                            byte[] bObj = outParams["uValue"] as byte[];
 
                            if (bObj != null)
                            {
                                sSerial = "";
                                sModel = "";
                                //Get the 4 Vesa descriptor blocks
                                string[] sDescriptor = new string[4];
                                sDescriptor[0] = Encoding.Default.GetString(bObj, 0x48, 18);
                                sDescriptor[1] = Encoding.Default.GetString(bObj, 0x6C, 18);
 
                                sSerial = sDescriptor[0].Substring(5).Replace(@"\0\0\0y\0", "").Trim();
                                sModel = sDescriptor[1].Substring(5).Replace(@"\0\0\0y\0", "").Trim();
                                rtbox.Text = sSerial;
                                rtbox2.Text = sModel;
                            }   
                        }
                    }
                }              
            }
            return programs;
        }
При запуске я ввожу Ip-адрес компа в textBox с именем machineName
вылезает ошибка в строке scope.Connect() - Значение не попадает в ожидаемый диапазон.

Добавлено через 4 минуты
запускаю процедуру щелчком по кнопке с кодом:
ReadMonitorusingWMI(machineName.Text.Trim());

программа берет данные из реестра
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2014, 17:13

Подключение к удаленному компьютеру
Здравствуйте. Загорелся вопросом и ищу решение для него. Есть 2 устройства: ipad и PC. На ipad есть...

Подключение к удаленному компьютеру
как подключится к удаленному компьютеру (в благих целях конечно), зная ip, логин и пароль...

Подключение к удаленному компьютеру по порту
Здравствуйте! Подскажите пожалуйста. Ситуация: у меня есть домашний компьютер, который...

Пропало подключение к удалённому компьютеру
Всем привет! История такая: у меня был домашний компьютер (далее в тексте он будет фигурировать...

Подключение к удаленному компьютеру на Delphi
Добрый день, форумчане. Заинтересовала механика программ удаленного управления. Написал клиент...

Подключение фискального регистратора к удаленному компьютеру
База 1С 8.2 находится на компе с Вин 7 максимальная. С двух других компьютеров под XP и 7...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.