![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Attack |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Здравствуйте, у меня проблема с получением полного пути к процессам, под Windows Seven (64-bit).
Сам список "exe" файлов получается нормально, делаю это вот так:
Соответственно в ListBox1 получаю полный список процессов, от всех пользователей. Дальше мне необходимо получить путь к каждому процессу. Делаю это так:
Но путь определяется не правильно! Некоторым процессам приписываются пути других. Так как грамотно получить пути всех процессов под Севеном? |
||||
|
|||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
Это смотрели?
|
|||
|
||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Keeper89, да, смотрел )) Та же самая проблема!
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
К сожалению нет у меня семерки и проверить не могу.
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
У меня есть 64-битная 7-ка. правда прямо сейчас проверить не могу. Пока такие замечания:
Какой разрядности ваше приложение? А проблемы случайно не с 64-битными приложениями? (например диспетчер задач - taskmgr.exe - 64-битный) Про фукнцию CreateToolhelp32Snapshot в MSDN написано:
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
ksili, программа у меня 32-битная.
А что нужно в Uses прописать для QueryFullProcessImageName? |
|||
|
||||
| Maks1509 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.8.2007 Где: г. Тольятти Репутация: 3 Всего: 5 |
По хорошему нужно создавать 64-битное приложение, но на данный момент компилятор Delphi этого сделать не может.
Немного иной способ решения данной проблемы я обнаружил на немецком форуме. Посмотрите, может поможет на 7, но в XP x64 работает превосходно. http://forum.sources.ru/index.php?showtopi...&st=0&# Это сообщение отредактировал(а) Maks1509 - 14.12.2009, 22:28 |
|||
|
||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Maks1509, спасибо, код работает, хотя и значительно обрастает дополнительными функциями ))
Добавлено: Код не определяет 2 процесса! Первый с PID = 4 ну это понято это "System" А вот второй это "audiodg.exe", при выполнении OpenProcess возвращает 0. Порыл в нете, люди говорят что этот процесс защищён, и в него можно залезть только из службы, как то так... мне этот процесс не важен, однако обидно! Причём Диспетчер задач путь его нормально отображает. Это сообщение отредактировал(а) Attack - 15.12.2009, 01:32 |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Что-то я сразу не заметил, что эта тема в Delphi. Для Visual Studio я качал WinSDK for Windows 7, чтобы использовать функции, которые появились в висте и семёрке. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Ну можно описатьтак, например:
Но лучше использовать динамическую линковку. -------------------- |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Открывай этот процесс с привилегией PROCESS_QUERY_LIMITED_INFORMATION ($1000). -------------------- |
|||
|
||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Демо, спасибо, однако только сейчас заметил один странный глюк:
![]() Слева программа запущена из среды(F9), а справа просто из системы (с правами админа) почему csrss.exe не опознался? |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
У меня одинаково.
Привилегии на отладку получаешь? -------------------- |
|||
|
||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Демо, нет конечно =) Сейчас попробую.
Добавлено: Вот что получилось:
Всем большое СПАСИБО! Это сообщение отредактировал(а) Attack - 15.12.2009, 22:38 |
|||
|
||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Если тебе сразу путь нужно получить без пути с устройством, то нужно было параметр 0 использовать просто:
-------------------- |
||||
|
|||||
| Attack |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Демо, поправил, спасибо.
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Любопытно, что этот код показывает все процессы только, если у вас есть права админа (под ограниченной учёткой никто вам DEBUG-привилегию не даст, а без неё вы сможете получить пути только к своим процессам).
В то же время Process Explorer показывает полные пути, даже будучи запущенным без админа. Может дело в 64-х разрядности? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Попробовал на XP x86 под ограниченной учётной записью - не показывает пути. -------------------- |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Да, я уже проверил тоже -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: нет Всего: 2 |
поясните тупому.
у меня не преобразует buffer в строку, возвращает только первый символ, после которого идет #0. Как вернуть нормально всю строку? --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
По порядку: 1. Оторвать руки писавшему. 2. Поправить of Char на of WideChar (т.к. вызывается wide-версия с "W"). 3. Убрать String(Buffer), оставив просто Buffer. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: нет Всего: 4 |
|
|||
|
||||
| malor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Демо>>Привилегии на отладку получаешь?
Вставил куски "Добавляем привилегию"/"Удаляем привилегию" из поста Attack к себе в прогу, убивающую explorer.exe. Имеем :
Пользователь, под которым работаю - с администраторскими правами. Но GetLastError() вернула ERROR_ACCESS_DENIED. Почему ? WinXP SP3 Это сообщение отредактировал(а) malor - 8.11.2011, 15:01 Присоединённый файл ( Кол-во скачиваний: 11 )
RunExplorerProject.zip 85,67 Kb |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |