Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Передача данных между процессами


Автор: bass 6.11.2010, 18:21
Ребят такая ситуация... Думаю уже неделю. smile  smile .... Операционка ХР .... Внедряю свою длл с помощь реестра во все процессы где есть USER32.DLL
 далее подменяю одну из ее функций на свою.... Все работает...... НО такая длл находиться может как в системном процессе так и админском и узерском....... Нужно чтоб она  читала данные из например открытого файла в памяти и в соответствии выполняла действия..... Но неизвестно когда какой процесс может обратиться  к этому файлу...... У меня была такая ситуация когда файл создал системный процесс , другие не могли его открыть(Ну кроме системных).... Реестр не хочу использовать скорость будет не охти.... Как ребят выкрутиться?????? Если есть у кого соображения или ссылочки где почитать????(Не могу наити в инете привилегии систем....)
Заранее благодарен....

Автор: bass 6.11.2010, 18:41
Забыл еще смотрю в сторону проверки с какими правами длл и из такого файла читать но это нагромождение кода да еще проврка узера на ранней стадии может вызвать исключение.....

Автор: GremlinProg 8.11.2010, 14:53
зайди под админом, создай где-нибудь папку, открой ей полный доступ для пользователей и обменивайся через нее сколько угодно

Автор: icecrashldr 8.11.2010, 17:07
Код

SECURITY_ATTRIBUTES sa;


sa.nLength = sizeof(sa);
    sa.bInheritHandle = FALSE;
    sa.lpSecurityDescriptor = NULL;

//
    // Define the SDDL for the DACL. This example sets 
    //
    szSD = TEXT("D:")       // Discretionary ACL
        TEXT("(D;OICI;GA;;;BG)")    // Deny access to built-in guests
        //TEXT("(D;OICI;GA;;;AN)")    // Deny access to anonymous logon (Win 2000 does not like it!)
        TEXT("(A;OICI;GRGW;;;AU)") // Allow read/write to authenticated users
        TEXT("(A;OICI;GA;;;BA)");   // Allow full control to administrators

    if( !ConvertStringSecurityDescriptorToSecurityDescriptor(
                szSD,
                SDDL_REVISION_1,
                &(sa.lpSecurityDescriptor),
                NULL) 
                )
{
}






Автор: bass 8.11.2010, 19:57
Я бы с удовольствием...... Но хотелось бы через память.... Обращении к жескому диску достаточно долгие..... Также говорил про реестр.... 
Погоди либо на файл в памяти можно установить уровень доступа????(Прям чуточку поподробнее..) Ой в эту сторону точно не смотрел.......
Тогда вопрос как писать отребуты безопасности чтоб если файл открыл системный процесс а доступ имели все и на открытие в CreateFileMaping...... icecrashldr спасибо ткнул меня в нужное напрвление наверно заработался.......... Ща погуглю...... но если не сложно кому кинте пример....

Автор: bass 17.11.2010, 07:32
K>    SECURITY_DESCRIPTOR sd = {sizeof(SECURITY_DESCRIPTOR)};
K>    ::InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
K>    ::SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE);

K>    SECURITY_ATTRIBUTES sa = {0};
K>    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
K>    sa.lpSecurityDescriptor = &sd;
K>    sa.bInheritHandle = true;


Доступ всем кажется заработало.................. smile  smile 
icecrashldr спасиб что в нужную сторону ткнул, я кажется заработался smile  smile 

Автор: bass 17.11.2010, 14:36
опять гарбли функция SetSecurityDescriptorDacl и InitializeSecurityDescriptor в ранний момент загрузки приводит к исключению..........
Даже если длл в памяти....... 
Проверяю факт загрузки системы.... На наличей запущенного своего ехе файла....

Автор: 12usver12 29.11.2010, 21:50
пайпы, сокеты , можно выделить кусок память в другом процессе каком-то и через нее общаться  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)