powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / winapi
28 сообщений из 28, показаны все 2 страниц
winapi
    #39389201
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, плиз новичку. Очень нужен код, который возвращает handle к файлу, созданный в другом процессе.Входные параметры - имя файла и/или имя процесса.
...
Рейтинг: 0 / 0
winapi
    #39389206
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM CreateFile.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
winapi
    #39389213
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezПомогите, плиз новичку. Очень нужен код, который возвращает handle к файлу, созданный в другом процессе.Входные параметры - имя файла и/или имя процесса.

что создано в другом процессе, файл или хендл к нему?
...
Рейтинг: 0 / 0
winapi
    #39389512
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

handle к нему. Другой процесс при запуске забирает монопольно файл и не отдает.
...
Рейтинг: 0 / 0
winapi
    #39389516
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

CreateFile вернет handle в моем процессе, инкрементируя количество пользователей ресурса. Вызвав closehandle я просто декрементирую свою ссылку на handle. А мне нужно закрыть все хэндлы к файлу...
...
Рейтинг: 0 / 0
winapi
    #39389534
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не закроешь. Только как-то дать команду тому процессу чтобы закрыл, но это в случае если там прописан какой-то способ приема таких команд. Или закрывать/убивать тот процесс.
...
Рейтинг: 0 / 0
winapi
    #39389589
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНикак не закроешь. Только как-то дать команду тому процессу чтобы закрыл, но это в случае если там прописан какой-то способ приема таких команд. Или закрывать/убивать тот процесс.
ProcessExplorer, Handle.exe как-то это делают...
...
Рейтинг: 0 / 0
winapi
    #39389640
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezDima TНикак не закроешь. Только как-то дать команду тому процессу чтобы закрыл, но это в случае если там прописан какой-то способ приема таких команд. Или закрывать/убивать тот процесс.
ProcessExplorer, Handle.exe как-то это делают...

Посмотри тут
...
Рейтинг: 0 / 0
winapi
    #39389662
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример со страницы выше
uploads/26792/handles.zip
...
Рейтинг: 0 / 0
winapi
    #39389962
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezMasterZiv,

handle к нему. Другой процесс при запуске забирает монопольно файл и не отдает.

Хендл специфичен для процесса, если тот процесс не предпринял особых усилий к обратному.
Если файл открыт монопольно, то его никаким образом в другом процессе не откроешь.
...
Рейтинг: 0 / 0
winapi
    #39390005
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivalanezMasterZiv,

handle к нему. Другой процесс при запуске забирает монопольно файл и не отдает.

Хендл специфичен для процесса, если тот процесс не предпринял особых усилий к обратному.
Если файл открыт монопольно, то его никаким образом в другом процессе не откроешь.
Он хочет закрыть хэндл в том процессе, который его открыл. ИМХО очень нездоровая идея.
alanezProcessExplorer, Handle.exe как-то это делают...
Затестил ProcessExplorer, он действительно показывает какие файлы открыл процесс и есть "Close handle" по правой кнопке. Если изначально запускать "От имени Администратора" то закрывает, если просто запустить - пишет прав не хватает.
...
Рейтинг: 0 / 0
winapi
    #39390277
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivalanezMasterZiv,

handle к нему. Другой процесс при запуске забирает монопольно файл и не отдает.

Хендл специфичен для процесса, если тот процесс не предпринял особых усилий к обратному.
Если файл открыт монопольно, то его никаким образом в другом процессе не откроешь.

Кто нибудь читал ссылку, которую я привел? Там черным по белому написано, и даже пример есть.
Код: plaintext
1.
2.
3.
4.
5.
To close handles opened by other processes, you simply call DuplicateHandle with DUPLICATE_CLOSE_SOURCE (1) specified in the
options parameter (it's documented on the MSDN page for DuplicateHandle, so go read it). 
You can specify NULL for the target process handle and target handle parameters. For example:

DuplicateHandle(handleToTheRemoteProcess, theRemoteHandle, NULL, NULL, 0, FALSE, 0x1);
...
Рейтинг: 0 / 0
winapi
    #39390428
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Администратор в наличие
...
Рейтинг: 0 / 0
winapi
    #39390432
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot __Avenger__]MasterZivпропущено...


To close handles opened by other processes, you simply call DuplicateHandle with DUPLICATE_CLOSE_SOURCE (1) specified in the options parameter (it's documented on the MSDN page for DuplicateHandle, so go read it). You can specify NULL for the target process handle and target handle parameters. For example:

DuplicateHandle(handleToTheRemoteProcess, theRemoteHandle, NULL, NULL, 0, FALSE, 0x1);

читал, основной вопрос в поиске параметра theRemoteHandle
...
Рейтинг: 0 / 0
winapi
    #39390457
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezосновной вопрос в поиске параметра theRemoteHandle
Там же все расписано
Код: plaintext
1.
Step 1: Enumerating handles
Call NtQuerySystemInformation with SystemHandleInformation (16). ...

изучай NtQuerySystemInformation()
...
Рейтинг: 0 / 0
winapi
    #39391127
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Пример со страницы выше
uploads/26792/handles.zip
у меня ругаеться такими словами:
cannot convert from 'PVOID' to '_NtQuerySystemInformation'. Conversion from 'void*' to pointer to non-'void' requires an explicit cast

на строчках 3-х строчках:
_NtQuerySystemInformation NtQuerySystemInformation = GetLibraryProcAddress("ntdll.dll","NtQuerySystemInformation");
_NtDuplicateObject NtDuplicateObject = GetLibraryProcAddress("ntdll.dll", "NtDuplicateObject");
_NtQueryObject NtQueryObject = GetLibraryProcAddress("ntdll.dll", "NtQueryObject");

Что не так?
...
Рейтинг: 0 / 0
winapi
    #39391134
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще на это:
if (!NT_SUCCESS(NtDuplicateObject(
processHandle,
handle.Handle,
GetCurrentProcess(),
&dupHandle,
0,
0,
0
)))
со словами:
error C2664: 'NTSTATUS (HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG)' : cannot convert parameter 2 from 'USHORT' to 'HANDLE'
...
Рейтинг: 0 / 0
winapi
    #39391138
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это код на С, в С++ надо тип явно приводить
Код: plaintext
1.
2.
  _NtQuerySystemInformation NtQuerySystemInformation =  (_NtQuerySystemInformation)GetLibraryProcAddress("ntdll.dll","NtQuerySystemInformation");
...
...
Рейтинг: 0 / 0
winapi
    #39391156
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭто код на С, в С++ надо тип явно приводить
Код: plaintext
1.
2.
  _NtQuerySystemInformation NtQuerySystemInformation =  (_NtQuerySystemInformation)GetLibraryProcAddress("ntdll.dll","NtQuerySystemInformation");
...



Аналогично
Код: plaintext
1.
handle.Handle -> (HANDLE)handle.Handle
...
Рейтинг: 0 / 0
winapi
    #39391219
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это нормально, что в win10 !NT_SUCCESS(status)==true
...
Рейтинг: 0 / 0
winapi
    #39394216
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Пример со страницы выше
uploads/26792/handles.zip
из этого примера- не закрывает CloseHandle(dupHandle) оригинальные handls
...
Рейтинг: 0 / 0
winapi
    #39394264
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закрытие оригинального handle CloseHandle((HANDLE)handle.Handle) - выбрасывает исключение...
...
Рейтинг: 0 / 0
winapi
    #39394365
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanez__Avenger__Пример со страницы выше
uploads/26792/handles.zip
из этого примера- не закрывает CloseHandle(dupHandle) оригинальные handls

CloseHandle(dupHandle) и не должен закрывать хэндл в чужом процессе.
...
Рейтинг: 0 / 0
winapi
    #39394367
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezзакрытие оригинального handle CloseHandle((HANDLE)handle.Handle) - выбрасывает исключение...

Тему то читали? Еще раз:
Код: plaintext
1.
2.
3.
4.
5.
To close handles opened by other processes, you simply call DuplicateHandle with DUPLICATE_CLOSE_SOURCE (1) specified in the
options parameter (it's documented on the MSDN page for DuplicateHandle, so go read it). 
You can specify NULL for the target process handle and target handle parameters. For example:

DuplicateHandle(handleToTheRemoteProcess, theRemoteHandle, NULL, NULL, 0, FALSE, 0x1);
...
Рейтинг: 0 / 0
winapi
    #39395000
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__, Вы великолепны в своей точности и внимательности! Жму руку! Цель поражена)
...
Рейтинг: 0 / 0
winapi
    #39396252
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин очередной косяк. Запускаю Код... убрал все строчки с закрытием handle's. В итоге все что делает программа - это ищет мой процесс по имени и далее ищет его handles... В итоге - рушиться искомый процесс с такими ошибками как в файлике .docx....
...
Рейтинг: 0 / 0
winapi
    #39396254
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: XXXXXX.exe
Версия приложения: X.X.X.XX
Отметка времени приложения: 5888d35c
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7601.19110
Отметка времени модуля с ошибкой: 5684255a
Код исключения: c000070a
Смещение исключения: 0009c18f
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Дополнительные сведения 1: a7aa
Дополнительные сведения 2: a7aa91f17ea749d42a4de3b390fa5b3d
Дополнительные сведения 3: a7aa
Дополнительные сведения 4: a7aa91f17ea749d42a4de3b390fa5b3d

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
...
Рейтинг: 0 / 0
winapi
    #39397016
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вопрос возник: а нельзя ли изменить существующий Handle к файлу в части параметров доступа и разделения ресурса?
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / winapi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]