Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование WMI для доступа к S.M.A.R.T. данным 
:(
    Опции темы
Zerofill
Дата 9.8.2013, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.9.2009

Репутация: нет
Всего: нет



Здравствуйте!

Вот такая задача стоит передо мной. Необходимо получить доступ к информации SMART через WMI на локальной машине. Но, как только запрос начинает выполняться, происходит Access denied. Подскажите, пожалуйста, в чем может быть причина. Приложение запускается под профилем с категорией "Администратор". Код приведен ниже
Код

searcher.Scope = new ManagementScope(@"\root\wmi");
            searcher.Query = new ObjectQuery("SELECT * FROM MSStorageDriver_FailurePredictData");
            objects = searcher.Get();

            if (objects != null && objects.Count > 0)
            {
                foreach (ManagementObject obj in objects)
                {
                    if (!string.IsNullOrEmpty(tmpStr = obj.Properties["VendorSpecific"].Value.ToString()))
                    {
                        byte[] bytes = (byte[])obj.Properties["VendorSpecific"].Value;

                        for (i = 0; i < bytes.Length; ++i)
                        {
                            int id = bytes[i * 12 + 2];

                            switch (id)
                            {
                                case 1:
                                    {
                                        signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.HDDRawReadErrorRate, 0, BitConverter.ToInt32(bytes, i * 12 + 7)+256*BitConverter.ToInt32(bytes, i * 12 + 8)); 
                                        signals.Add(signal);
                                        break;
                                    }
                                
                                case 5:
                                    {
                                        signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.HDDReallocatedSectorCut, 0, BitConverter.ToInt32(bytes, i * 12 + 7) + 256 * BitConverter.ToInt32(bytes, i * 12 + 8));
                                        signals.Add(signal);
                                        break;
                                    }
                                case 7:
                                    {
                                        signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.HDDSeekErrorRate, 0, BitConverter.ToInt32(bytes, i * 12 + 7) + 256 * BitConverter.ToInt32(bytes, i * 12 + 8));
                                        signals.Add(signal);
                                        break;
                                    }
                                
                                case 194:
                                    {
                                        signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.HDDTemperature, 0, BitConverter.ToInt32(bytes, i * 12 + 7) + 256 * BitConverter.ToInt32(bytes, i * 12 + 8));
                                        signals.Add(signal);
                                        break;
                                    }
                                case 197:
                                    {
                                        signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.HDDCurrentPendingSectorCount, 0, BitConverter.ToInt32(bytes, i * 12 + 7) + 256 * BitConverter.ToInt32(bytes, i * 12 + 8));
                                        signals.Add(signal);
                                        break;
                                    }
                            }

                        }

                    }
                }
            }
            else
            {
                signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.Error, 0, "No MSStorageDriver_FailurePredictData values");
                signals.Add(signal);
            }
            }
            catch (ManagementException ex)
            {
                signal = new Signal(Subsystem.TerminalHardware, DeviceClass.HDD, DeviceProperty.Error, 0, ex.Message);
                signals.Add(signal);
            }


Спасибо.

Разве ни у кого никаких предположений? 

Это сообщение отредактировал(а) Zerofill - 12.8.2013, 13:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.