Как посмотреть com объекты windows 10

Получить список COM объектов из PowerShell Windows Для 1С Предприятие 8.3 в Windows 10 есть следующие объекты: V83.Application V83C.Application Получение перечня всех ComObject в Windows (Команда PowerShell) Открыть Windows PowerShell ISE Запустить код: gci HKLM:SoftwareClasses -ea 0| ? {$_.PSChildName -match '^w+.w+$' -and (gp "$($_.PSPath)CLSID" -ea 0)} | ft PSChildName 0 0 голос Рейтинг статьи Related ... Читать далее

30.03.2018 от Qlik Expert Russia

Получить список COM объектов из PowerShell Windows

Получить список COM объектов из PowerShell Windows

Для 1С Предприятие 8.3 в Windows 10 есть следующие объекты:

  • V83.Application
  • V83C.Application

Получение перечня всех ComObject в Windows (Команда PowerShell)

  1. Открыть Windows PowerShell ISE
  2. Запустить код:

1

gci HKLM:SoftwareClasses ea 0| ? {$_.PSChildName match ‘^w+.w+$’ and (gp «$($_.PSPath)CLSID» ea 0)} | ft PSChildName

0
0
голос

Рейтинг статьи

Related posts:

  1. PowerShell и QlikView 12. Книги по PowerShell. Примеры и практика.
  2. Обзор модуля Аналитика – Управление нашей фирмой 1С Предприятие 8.3
  3. Программирование в 1С:Предприятие 8.3 Внешняя обработка Программный модуль
  4. Концепция системы 1С:Предприятие 7.7. Метаданные, Основные понятия

Подписаться

Уведомить о

guest

1 Комментарий

Старые

Новые
Популярные

Межтекстовые Отзывы

Посмотреть все комментарии

Ness

Ness

3 лет назад

Спасибо. Помогло.

0

Ответить

1 / 1 / 0

Регистрация: 09.01.2011

Сообщений: 37

1

01.02.2011, 15:09. Показов 19087. Ответов 1


Я в этой теме новичёк
Читаю про COM. Но пока нигде не встретил как можно просмотреть список зарегистрированных COM компонентов которые можно было бы использовать

Подскажите кто знает где этот список можно увидеть, кроме как в реестре
И вообще где есть документация по этим компонентам…

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



0



17 / 17 / 0

Регистрация: 19.02.2012

Сообщений: 68

29.06.2012, 10:53

2

Посмотреть все компоненты можно:
Пуск — Выполнить… — dcomcnfg

Можно не только просмотреть но и настроить

Добавлено через 1 минуту
Упс… На дату поста не посмотрел…сорри…



2



In Powershell I can create COM objects which can be used, for example, to control Microsoft Office applications:

$excel = New-Object -com "Excel.Application"
$excel.visible = $true

How can I list all of the available COM objects that can be created in Powershell?

asked Mar 18, 2009 at 22:15

John Channing's user avatar

John ChanningJohn Channing

6,4717 gold badges44 silver badges56 bronze badges

I found this powershell one-liner script that supposedly lists all COM objects.

gci HKLM:SoftwareClasses -ea 0| ? {$_.PSChildName -match '^w+.w+$' -and
(gp "$($_.PSPath)CLSID" -ea 0)} | ft PSChildName

let us know if it works!

answered Mar 18, 2009 at 22:37

Jeff Atwood's user avatar

Jeff AtwoodJeff Atwood

63k48 gold badges149 silver badges153 bronze badges

6

Use OleView.exe from Microsoft. I think it may come with Visual Studio. If not, you can find it in the Windows SDK. That’s a big download; you can either download the whole thing or you could experiment with downloading it piecemeal using the setup.exe installer.

Once in OleView, look under «type libraries». Excel for instance appears under «Microsoft Exel».

answered Mar 19, 2009 at 6:12

dan-gph's user avatar

0

Another option that should be noted is through WMI:

Get-WMIObject Win32_ClassicCOMClassSetting

answered Mar 24, 2009 at 21:56

JasonMArcher's user avatar

JasonMArcherJasonMArcher

13.8k22 gold badges55 silver badges52 bronze badges

4

Время прочтения
4 мин

Просмотры 6.7K

Обратная разработка программного обеспечения — процедура получения информации об алгоритме. При этом получение этих данных напрямую зависит от того, насколько много есть информации о приложении в документации, и от того, какой использовался способ для создания файла. Всё еще больше усложняется, если алгоритм заимствует фрагменты из других приложений или операционной системы. Эта статья расскажет о механизмах, которые заложены в ОС Windows, благодаря которым процесс обратной разработки может стать весьма сложным процессом.

С чего всё началось

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

Результатом использования парадигмы объектно-ориентированного подхода стали методы логического разбиения приложений на отдельные фрагменты, при этом можно было создавать уже скомпилированные части кода, которые собирались в новые приложения. Модульность позволила задуматься о механизмах, которые могли бы позволить объединять код, фрагменты которого были бы написаны на разных языках программирования, в одну систему, которая решала бы отдельно взятую проблему или целый класс проблем.

В операционной системе Windows подход к созданию отдельных компонентов был реализован в предоставлении унифицированных интерфейсов, которыми приложения пользуются и по сей день. Эти интерфейсы называются WinAPI. Их исследование достаточно тривиально, большая часть интерфейсов задокументирована и поэтому их обратная разработка заключается в том, чтобы найти в документации название и прочитать данные о параметрах и возвращаемом значении.

Каждый WinAPI интерфейс позволяет сделать минимальное действие, которое может произвести ОС, то есть если программист решит написать приложение, то для его реализации придётся задействовать несколько сотен, а то и тысяч интерфейсов. Отдельно стоит упомянуть, что это далеко не единственный способ, который доступен в ОС для реализации алгоритмов. ОС Windows также предлагает компонентный подход для построения приложений. Это означает, что программист может объединять целые программы вместе, чтобы реализовать выполнение алгоритма. Возможно это за счет использования механизма Component Object Module.

Появление COM не случайно, реализация этого механизма — логичный этап развития. На схеме ниже можно увидеть ретроспективу создания механизмов в ОС Windows:

Картинка наглядно показывает, как связано появление того или иного механизма. Реализация каждого нового механизма это решение проблем, которые возникли при реализации предыдущего механизма. Картинка включает в себя такие механизмы как OLE, COM+, DCOM, которые тоже, надо сказать очень сложные с точки зрения реализации и изучения.

Некоторые полезные определения

Представленная выше картинка с годами внедрения механизмов в ОС дает наглядное представление, что механизмы, которые сегодня используются, были созданы почти 22 года назад. Создание актуальной документации для такого длительного периода времени весьма сложная задача и соответственно, когда встает вопрос об обратной разработке ПО, которое использует указанные выше механизмы, нужно точно знать, ЧТО делает каждый из них.

COM дает возможность переиспользовать куски приложения. Работает за счет того, что можно собрать исполняемый кусок кода и расположить его в реестре ОС. Кусок кода получит уникальный идентификатор и будет вызывать ОС каждый раз, как приложения будут запрашивать обработку данных по идентификатору. Для создания кода можно использовать любой компилируемый язык программирования.

OLE — механизм связывания и внедрения данных в различные приложения. Больше всего распространен в приложениях, которые используются для офисных задач. Открытие таблицы Excel в документе Word самый распространенный пример использования механизма.

DCOM — механизм, который предоставляет возможность работать с объектами COM в рамках локальной сети или Интернета.

COM+ — механизм, который может быть использован для создания распределенного на целые кластера программного обеспечения. Включается в себя COM, предоставляет для объектов механизмы, которые позволяют с ними общаться по сети. Предоставляет механизмы по синхронизации, отказоустойчивости и разграничению доступа.

Примеры и практика

Давайте попробуем посмотреть, как обозначенные выше механизмы выглядят в ПО при обратной разработке. Начнем с OLE. Как было сказано выше, этот механизм проще всего обнаружить в офисных документах. Попробуем найти такой документ.

Для исследования был выбран вот этот документ. Он представляет собой docx файл, по сути это архив, который содержит некоторое количество файлов с инструкциями, как его рендерить. Заглянем внутрь: в этом формате все данные, которые могут быть добавлены через OLE это файлы, которые расположены в директории «word/embeddings». Заголовок содержимого объекта можно видеть ниже:

Ничего особенно примечательного, такие объекты можно анализировать с использованием набор инструментов oletools.

OLE объект представляет собой файловую систему, в которую можно положить информацию необходимую для встраивания данных. Если воспользоваться инструментом oleobj, то можно увидеть, что внутри объекта находится txt файл. Кстати, это можно увидеть и из шестнадцатеричного редактора:

Объект COM — представление зависит от типа предоставляемого функционала, чаще всего в программном обеспечении используется в совокупности с WinAPI CoCreateInstance. Визуально исследовать объекты можно через относительно простой инструмент — COMView. Пример работы инструмента:

Почти все элементы пользовательского интерфейса, которыми мы пользуемся каждый день, это COM объекты.

Как найти объекты COM+? Если в COMView вы обнаружили объект, который имеет интерфейс IUnknown, перед вами COM+ объект. Например:

Таким образом можно установить, за какой функционал отвечает тот или иной объект, который используется программным обеспечением. При этом не нужно вникать в имплементацию и можно сразу разобраться в алгоритме приложения, прочитав описание объекта в интерфейсе COMView.


Статья подготовлена Александром Колесниковым в рамках курса «Reverse-Engineering. Professional». Если интересно узнать больше о программе и формате обучения на этом курсе, приходите на день открытых дверей онлайн, на котором вы также сможете познакомиться с преподавателем.

Следуйте инструкциям, чтобы получить номер вашего COM-порта: Откройте Диспетчер устройств (Пуск → Панель управления → Оборудование и звук → Диспетчер устройств). Посмотрите в списке диспетчера устройств, откройте категорию «Порты» и найдите соответствующий COM-порт. Порт.

Чтобы подтвердить, что COM-порт используется в диспетчере устройств.

  1. Нажмите кнопку Пуск.
  2. Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».
  3. Щелкните вкладку Оборудование.
  4. Нажмите кнопку «Диспетчер устройств».
  5. Щелкните значок + рядом с «Портами (COM и LPT)», чтобы развернуть список. (Список в алфавитном порядке).
  6. Запишите количество доступных COM-портов.

Как назначить COM-порт USB-устройству Windows 10?

  1. Откройте диспетчер устройств Windows.
  2. Щелкните Порты (COM и LPT), чтобы расширить выбор. …
  3. Щелкните правой кнопкой мыши устройство, название которого вы хотите изменить, и выберите «Свойства».
  4. Щелкните «Параметры порта», а затем нажмите кнопку «Дополнительно».

1) Щелкните Пуск. 2) Щелкните Панель управления в меню Пуск. 3) Щелкните Диспетчер устройств на Панели управления. 4) Нажмите + рядом с портом в диспетчере устройств. для отображения списка портов.

USB-соединениям не присвоены номера COM-портов. если это не USB-последовательный адаптер, который затем назначит виртуальный com-порт #. Вместо этого им назначен адрес.

Как узнать, какой порт USB используется устройством?

Используйте диспетчер устройств, чтобы определить, есть ли на вашем компьютере порты USB 1.1, 2.0 или 3.0:

  1. Откройте диспетчер устройств.
  2. В окне «Диспетчер устройств» щелкните значок «+» (плюс) рядом с «Контроллеры универсальной последовательной шины». Вы увидите список USB-портов, установленных на вашем компьютере.

Откройте Диспетчер устройств на вашем главном компьютере / ПК. Подключите UPort к главному компьютеру (хосту). В диспетчере устройств разверните дерево контроллеров универсальной последовательной шины.. Вы увидите, что ваш собственный COM-порт указан как порт связи (COM1).

Какие бывают 3 типа портов монитора?

HDMI, DisplayPort и USB-C ™ являются наиболее распространенными типами портов и кабелей для мониторов, и вы найдете их на большинстве современных дисплеев. Однако есть и устаревшие варианты, такие как VGA и DVI, которые могут потребоваться для подключения к более старым устройствам.

Как мне найти номер моего порта Bluetooth?

Шаг 2: проверьте исходящий COM-порт

  1. Щелкните значок Bluetooth на панели задач Windows:
  2. Выберите «Открыть настройки»:
  3. На вкладке COM-порты; Теперь вы должны увидеть COM-порты, назначенные как для исходящих, так и для входящих подключений для только что сопряженного устройства. Обратите внимание на номер исходящего COM-порта:

Когда вы подключаете компьютерный интерфейс синхронизации к USB-порту, Windows назначает устройству номер COM-порта. Если вы используете другой USB-порт в следующий раз, когда вы его подключаете, или если вы также используете USB-принтер, им может быть назначен другой номер COM-порта каждый раз, когда вы их используете.

Если COM-порт по-прежнему не отображается в раскрывающемся списке, проверьте диспетчер устройств на панели управления и убедитесь, что USB-адаптер указан и работает правильно.. Номер COM-порта должен быть указан рядом с ним в скобках, если он работает правильно. … Переустановите драйвер для USB-адаптера.

Запустите диспетчер устройств и выберите «Действие»> «Добавить устаревшее оборудование».

  1. Выберите «Установить оборудование, которое я вручную выбрал из списка».
  2. Прокрутите вниз и выберите Порты (COM и LPT), затем нажмите Далее.
  3. Выберите порт связи.
  4. Нажмите «Далее», а затем «Готово».
  5. Элемент COM-портов теперь будет отображаться в разделе «Устройства и принтеры».

Как исправить последовательный порт, который не открывается в Windows 10?

  1. Убедитесь, что у вас есть необходимые драйверы.
  2. Убедитесь, что порт не открыт / отсоедините кабель.
  3. Остановите службу факсов и сканирования Windows.
  4. Отключите последовательный порт в диспетчере устройств.
  5. Попробуйте использовать другой кабель.
  6. Перезагрузите устройство.
  7. Переустановите драйвер последовательного порта.

 
Layner ©
 
(2006-09-21 10:20)
[0]

Помогите найти такую программу, что бы показывала все зарегистрированные COM объекты в системе. Вышел на одну — «Браузер COM объектов», автор Email dagvrn@yandex.ru Автор -DAGGER- тут например http://exe.robot1.info/programs/122-715-brauzer-com-ob-ektov-download.shtml , но ни одна ссылка на скачивание не работает или ее нет :(


 
Ганна Юхимівна
 
(2006-09-21 10:21)
[1]

Import ActiveX Control


 
Layner ©
 
(2006-09-21 10:22)
[2]

Еще, есть программа ActiveXplorer, может ли она показать все КОМ объекты в системе, если отобрадает все ActiveX, DLL и EXE зарег. в системе? Или тут ещё не хвататет OCX и подобных?


Описание:
ActiveXplorer - это менеджер компонентов ActiveX, DLL и EXE серверов. Программа позволяет Вам регистрировать и дерегистрировать компоненты любым удобным Вам способом - через контекстное меню Проводника (Windows Explorer), с помощью "горячих" клавиш, через специальный скрипт или с помощью обычного меню. ActiveXplorer показывает установленные компоненты и их свойства (имя PROGID, номера TYPELIB/CLSID, имя файла, размер, версия и т.д.) в виде удобного списка. Не нужно больше использовать неудобную командную строку или пробираться через дебри системного реестра - используйте возможности ActiveXplorer, и Вы поймете, насколько Ваша жизнь может стать легче!
Основные возможности ActiveXplorer:
* Поддержка компонентов ActiveX, DLL и EXE серверов
* Возможность отображения свойств компонент (номера CLSID и TYPELIB, версия, и т.д.)
* Интеграция с Проводником (Windows Explorer)
* Защита критических функций паролем
* "Умное" запоминание действий пользователя
* Безопасное удаление компонент из реестра в случае невозможности дерегистрации
* Сохранение списка для открытия в Microsoft Excel (в формате *.csv, *.txt)
* Создание отчетов об установленных компонентах
* Автоматическая очистка от плохих компонент
* Функция сравнения файлов
* Анализ объектов для создания справки по компоненте
* Возможность просмотра функций, подпрограмм, событий, объявлений в скомпилированных файлах для использования в своих программах.


 
Layner ©
 
(2006-09-21 10:24)
[3]

Ганна Юхимівна   (21.09.06 10:21)
А встречный вопрос можно?
— Как получить такой список в своей программе?
— Полный ли это список, это только вроде контролы?


 
Ганна Юхимівна
 
(2006-09-21 10:31)
[4]


> А встречный вопрос можно?

А можно узнать — для какой цели Вам это нужно ?
Получение списка COM-объектов — это фактически выборка из HKEY_CLASSES_ROOT и довольно длительная по времени…

Если Вы поделитесь ЦЕЛЬЮ — возможно мы подскажем Вам более быстрый СПОСОБ.


 
Layner ©
 
(2006-09-21 10:47)
[5]

Да не задача у нас, на одном сервере ПО работает как надо, на втором глючит, уже все разобрались на чем сваливает, пишет КОМ объект не зарегистрирован, ПО не мое, закрытое, вот и хочу получить список зарегистрированных КОМ объектов на первом сервере, и сравнить его со списком на втором сервере. Можно как со стороней программой, так и со своей, если если ее можно быстро «состряпать» :)


 
Layner ©
 
(2006-09-21 10:50)
[6]

Есть в HKEY_CLASSES_ROOT большой список, название ветви, и у многих есть подветвь CLSID, там GUID, можно ли по этому GUID вытянуть доп. информацию?


 
Romkin ©
 
(2006-09-21 11:03)
[7]

dcomcnfg.exe запусти :)


 
Игорь Шевченко ©
 
(2006-09-21 11:18)
[8]

А эта… OleView из Platform SDK уже некошерно ?


 
Layner ©
 
(2006-09-21 11:19)
[9]

Romkin ©   (21.09.06 11:03)
Спасибо, но слишком рутинно в ручную :) Надо найти только разницу что есть / нет на том / другом. Сканирование HKEY_CLASSES_ROOT помогло, список уже постоен, сейчас думаю как выудить доп. информацию из GUID, что в CLSID, может кто подскажет, куда этот GUID уходит?


  • Remove From My Forums
  • Question

  • In a very old post ( http://www.vistax64.com/powershell/91583-there-any-script-get-list-com-objects-computer.html ) I’ve found a solution to list every COM objects in a computer

    These 2 solutions were posted:

    1) gci HKLM:SoftwareClasses -ea 0| ? {$_.PSChildName -match ‘^w+.w+$’ -and (gp «$($_.PSPath)CLSID» -ea 0)} | ft PSChildName

    and a much simpler one:

    2) get-wmiobject Win32_COMClass

    The first one is great because it returns the PSchildname that I can use in  $xl = new-object -comobject <PSCHILDNAME>

    The second one is definitely shorter, and is the one I would like to use, but so far I cannot find the PSChildname in the form xxxxxxx.yyyyyyy like $xl = new-object -comobject excel.application

    Any thoughts ?

Answers

  • Hi Cyreli,

    The first command doesn’t actually return every Com Class, just those where the ProgID matches the pattern of
    <letters>.<letters>.

    The Win32_ComClass doesn’t directly contain the ProgID of any of the classes, so by the time you cross reference with the values contained within win32_classiccomclasssetting you wind up with an extremely slow executing query.

    What you could always do is place a function such as the one detailed by James Brundage here(
    http://blogs.msdn.com/b/powershell/archive/2009/03/20/get-progid.aspx) into your powershell profile so that it’s always availible.  The execution time is fine
    and it takes 64-Bit computing into account (which is always nice…)

    function Get-ProgID {            
      #.Synopsis      
      #  Gets all of the ProgIDs registered on a system      
      #.Description      
      #  Gets all ProgIDs registered on the system. The ProgIDs returned can be used with New-Object -comObject      
      #.Example      
      #  Get-ProgID      
      #.Example      
      #  Get-ProgID | Where-Object { $_.ProgID -like "*Image*" }       
      param()      
      $paths = @("REGISTRY::HKEY_CLASSES_ROOTCLSID")      
      if ($env:Processor_Architecture -eq "amd64") {      
        $paths+="REGISTRY::HKEY_CLASSES_ROOTWow6432NodeCLSID"      
      }       
      Get-ChildItem $paths -include VersionIndependentPROGID -recurse |      
      Select-Object @{      
        Name='ProgID'      
        Expression={$_.GetValue("")}          
      }, @{      
        Name='32Bit'      
        Expression={      
          if ($env:Processor_Architecture -eq "amd64") {      
            $_.PSPath.Contains("Wow6432Node")        
          } else {      
            $true      
          }            
        }      
      }      
    }
    

    If you haven’t done so already, the below two lines will create a profile for you..

    new-item ($PROFILE -replace "\[^\]*ps1$") -ItemType directory
    notepad $PROFILE
    

     Then just paste in the function definition into your profile, restart powershell and voila, done.

    You could of course do the exact same thing with the code from your source article (as a note, if you do, i’d replace the call to format-table at the end with a select.  That way you can send the results of your function off down the pipeline without
    too many problems, as formatting cmdlets should only really be at the end of a pipeline).

    Hope that Helps,

    Matthew

    • Marked as answer by

      Thursday, September 16, 2010 10:24 AM

  • Remove From My Forums
  • Question

  • In a very old post ( http://www.vistax64.com/powershell/91583-there-any-script-get-list-com-objects-computer.html ) I’ve found a solution to list every COM objects in a computer

    These 2 solutions were posted:

    1) gci HKLM:SoftwareClasses -ea 0| ? {$_.PSChildName -match ‘^w+.w+$’ -and (gp «$($_.PSPath)CLSID» -ea 0)} | ft PSChildName

    and a much simpler one:

    2) get-wmiobject Win32_COMClass

    The first one is great because it returns the PSchildname that I can use in  $xl = new-object -comobject <PSCHILDNAME>

    The second one is definitely shorter, and is the one I would like to use, but so far I cannot find the PSChildname in the form xxxxxxx.yyyyyyy like $xl = new-object -comobject excel.application

    Any thoughts ?

Answers

  • Hi Cyreli,

    The first command doesn’t actually return every Com Class, just those where the ProgID matches the pattern of
    <letters>.<letters>.

    The Win32_ComClass doesn’t directly contain the ProgID of any of the classes, so by the time you cross reference with the values contained within win32_classiccomclasssetting you wind up with an extremely slow executing query.

    What you could always do is place a function such as the one detailed by James Brundage here(
    http://blogs.msdn.com/b/powershell/archive/2009/03/20/get-progid.aspx) into your powershell profile so that it’s always availible.  The execution time is fine
    and it takes 64-Bit computing into account (which is always nice…)

    function Get-ProgID {            
      #.Synopsis      
      #  Gets all of the ProgIDs registered on a system      
      #.Description      
      #  Gets all ProgIDs registered on the system. The ProgIDs returned can be used with New-Object -comObject      
      #.Example      
      #  Get-ProgID      
      #.Example      
      #  Get-ProgID | Where-Object { $_.ProgID -like "*Image*" }       
      param()      
      $paths = @("REGISTRY::HKEY_CLASSES_ROOTCLSID")      
      if ($env:Processor_Architecture -eq "amd64") {      
        $paths+="REGISTRY::HKEY_CLASSES_ROOTWow6432NodeCLSID"      
      }       
      Get-ChildItem $paths -include VersionIndependentPROGID -recurse |      
      Select-Object @{      
        Name='ProgID'      
        Expression={$_.GetValue("")}          
      }, @{      
        Name='32Bit'      
        Expression={      
          if ($env:Processor_Architecture -eq "amd64") {      
            $_.PSPath.Contains("Wow6432Node")        
          } else {      
            $true      
          }            
        }      
      }      
    }
    

    If you haven’t done so already, the below two lines will create a profile for you..

    new-item ($PROFILE -replace "\[^\]*ps1$") -ItemType directory
    notepad $PROFILE
    

     Then just paste in the function definition into your profile, restart powershell and voila, done.

    You could of course do the exact same thing with the code from your source article (as a note, if you do, i’d replace the call to format-table at the end with a select.  That way you can send the results of your function off down the pipeline without
    too many problems, as formatting cmdlets should only really be at the end of a pipeline).

    Hope that Helps,

    Matthew

    • Marked as answer by

      Thursday, September 16, 2010 10:24 AM

Понравилась статья? Поделить с друзьями:
  • Как посмотреть битность системы windows xp
  • Как посмотреть com port windows 10
  • Как посмотреть биос на компьютере windows 10
  • Как посмотреть cid sd карты на windows
  • Как посмотреть батарею на ноутбуке windows 10