1 | |
Как определить разрядность службы?15.03.2015, 22:21. Показов 2964. Ответов 5
Метки нет (Все метки)
Как-нибудь через EnumServicesStatusEx ?
В реестре я так понимаю за это отвечает параметр HKLM\SYSTEM\CurrentControlSet\services\"ServiceName" -> WOW64 (зачение = 1) Спасибо за ответы.
0
|
15.03.2015, 22:21 | |
Ответы с готовыми решениями:
5
Как определить разрядность операционной системы кодом C++? Определить разрядность windows из 32-битного процесса Как определить 64/32 разрядность ОС'и Как программно определить разрядность ос? |
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
15.03.2015, 23:03 | 2 |
Еще там есть ImagePath c путем к исполняемому образу. А в заголовке файла IMAGE_FILE_HEADER в поле .Machine должно быть написано под какую архитектуру.
1
|
Ушел с форума
|
|
16.03.2015, 08:57 | 3 |
Если служба запущена, тогда получить ID процесса из EnumServiceStatusEx или
QueryServiceStatusEx, открыть процесс через OpenProcess и далее вызвать IsWow64Process. Если служба остановлена, тогда все сильно усложняется. Можно, как написал rao, найти exe-файл и распарсить его PE-заголовок, это не очень мудрено. Но это не сработает для .NET-служб (там может быть 0x10b в заголовке, т.е. 32-битный image, а процесс на самом деле 64-битный).
2
|
16.03.2015, 09:37 [ТС] | 4 |
Проблема была как раз в этой части.
Дело в том, что в некоторых службах прописан путь к c:\windows\system32\file.exe (ImagePath). тогда как на самом деле служба 32-битная и файл находится в папке Wow64. Хотелось для надежности знать точно по какому пути будет обращение, зная разрядность службы. rao, Убежденный, спасибо. В принципе вопросов больше нет.
0
|
Ушел с форума
|
|
25.10.2016, 18:21 | 5 |
Если я не ошибаюсь, в ключе реестра 32-битной службы записано
значение WOW64 = 1 (REG_DWORD). Вроде бы по нему SCM и определяет, что служба 32-битная и путь надо брать из SysWow64.
1
|
25.10.2016, 20:39 [ТС] | 6 |
Да-да. Это какая-то специфика установщика, что он 32-разрядным службам прописывает в реестре путь к \system32\...
Моя программа уже давно ориентируется на параметр WOW64, и еще ни разу не подводило. Всегда файл был расположен под \SysWow64.
0
|
25.10.2016, 20:39 | |
25.10.2016, 20:39 | |
Помогаю со студенческими работами здесь
6
Как определить разрядность приложения Как определить разрядность стороннего процесса Как определить разрядность системы, установленной на ноутбуке? Как определить разрядность .EXE или .DLL? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |