Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
1

Как определить разрядность службы?

15.03.2015, 22:21. Показов 2964. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как-нибудь через EnumServicesStatusEx ?

В реестре я так понимаю за это отвечает параметр HKLM\SYSTEM\CurrentControlSet\services\"ServiceName" -> WOW64 (зачение = 1)

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

Как определить разрядность операционной системы кодом C++?
Решил сделать автозагрузку для одной программы, которая бывает версий х32 и х64. Мне надо проверить...

Определить разрядность windows из 32-битного процесса
нужно определить разрядность операционной системы из 32-битного процесса нашел такой кусок кода,...

Как определить 64/32 разрядность ОС'и
Добрый день, пишу игровой движок на С++ с использованием OpenGL/GLFW. Мне нужно, что при запуске...

Как программно определить разрядность ос?
Как можно определить разрядность операционной системы в прогамме на вб.нет?

5
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
15.03.2015, 23:03 2
Еще там есть ImagePath c путем к исполняемому образу. А в заголовке файла IMAGE_FILE_HEADER в поле .Machine должно быть написано под какую архитектуру.
1
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
16.03.2015, 08:57 3
Если служба запущена, тогда получить ID процесса из EnumServiceStatusEx или
QueryServiceStatusEx, открыть процесс через OpenProcess и далее вызвать IsWow64Process.

Если служба остановлена, тогда все сильно усложняется.
Можно, как написал rao, найти exe-файл и распарсить его PE-заголовок,
это не очень мудрено. Но это не сработает для .NET-служб (там может быть
0x10b в заголовке, т.е. 32-битный image, а процесс на самом деле 64-битный).
2
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
16.03.2015, 09:37  [ТС] 4
Цитата Сообщение от Убежденный Посмотреть сообщение
найти exe-файл
Проблема была как раз в этой части.
Дело в том, что в некоторых службах прописан путь к c:\windows\system32\file.exe (ImagePath).
тогда как на самом деле служба 32-битная и файл находится в папке Wow64.
Хотелось для надежности знать точно по какому пути будет обращение, зная разрядность службы.
rao, Убежденный, спасибо.
В принципе вопросов больше нет.
0
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.10.2016, 18:21 5
Цитата Сообщение от Dragokas Посмотреть сообщение
Дело в том, что в некоторых службах прописан путь к c:\windows\system32\file.exe (ImagePath).
тогда как на самом деле служба 32-битная и файл находится в папке Wow64.
Если я не ошибаюсь, в ключе реестра 32-битной службы записано
значение WOW64 = 1 (REG_DWORD). Вроде бы по нему SCM и определяет,
что служба 32-битная и путь надо брать из SysWow64.
1
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
25.10.2016, 20:39  [ТС] 6
Да-да. Это какая-то специфика установщика, что он 32-разрядным службам прописывает в реестре путь к \system32\...
Моя программа уже давно ориентируется на параметр WOW64, и еще ни разу не подводило. Всегда файл был расположен под \SysWow64.
0
25.10.2016, 20:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2016, 20:39
Помогаю со студенческими работами здесь

Как определить разрядность приложения
Здравствуйте Подскажите, пожалуйста, как в лог-файл приложения записать разрядность приложения....

Как определить разрядность стороннего процесса
Добрый вечер, подскажите пж-та как можно определить разрядность стороннего процесса? Для своего...

Как определить разрядность системы, установленной на ноутбуке?
не могу найти скольки битная система у меня на ноутбуке HP

Как определить разрядность .EXE или .DLL?
Как определить разрядность .EXE или .DLL? WINAPI функций вроде для етого нет. Я делаю сортировщик...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru