Невозможно получить доступ к каталогу точек повторной обработки подключенного драйвера фильтра из учетной записи пользователя Windows XP x64 prof

Я создал «специальную файловую систему» ​​для очень специального приложения безопасности.

Я создаю точку повторной обработки, используя пустой каталог. За этой точкой повторного анализа находится драйвер фильтра, который управляет связью между NTFS и программой пользовательского режима, которая выполняет некоторую работу по шифрованию / дешифрованию и управлению (смесь FUSE, TrueCrypt, RamDisc, …). Все это встроено в C / C ++ и отлично работает под Win7 x64.

Теперь у меня есть хорошая задача, чтобы заставить его работать на windwos xp x64 professional. Когда все приложение работает с правами администратора, оно работает нормально, но когда я переключаюсь на учетную запись пользователя, я не могу получить доступ к смонтированному каталогу.

Mounter и «специальная файловая система» (назовем это sfs) являются системными службами, а другое приложение должно запускаться под учетной записью пользователя (в соответствии с COM), операция монтирования прошла успешно (когда я переключаюсь на учетную запись администратора после операции монтирования, я могу доступ к каталогу), остальные части приложения также работают нормально, но единственное, что я не могу сделать, — это получить доступ к этому самому каталогу.

Я дал «всем», группе пользователей и конкретному пользователю все права на драйвер, библиотеку (связь между драйвером и sfs), монтировщик и специальную файловую систему, а также многое сделал в реестре. Я также дал эти разрешения для смонтированного каталога (все права, владелец, …), но ничего не работает.

Отладочная отладка показывает, что запрос на каталог или файлы внутри никогда не приходит к «sfs». Кажется, что IO-Manager никогда не отправляет что-то по этому адресу. Другая проблема заключается в том, что мне не удается получить все отладочные оттиски из ОС (загрузиться в локальном режиме отладки и использовать DebugView.exe из SysInternals), но это другая история.

Что я упустил? В чем разница между системой безопасности XP и Win7? Есть ли какие-то основные ограничения в XP, которых я не знаю?

Пожалуйста, спросите, нужны ли вам фрагменты кода.

Любые советы или идеи приветствуются!

1

Решение

Нашел это!

Я забыл установить безопасность для устройства itselfe!
Какая плохая вещь, чтобы не найти это раньше! 🙁

Это раздел службы монтирования:

static VOID GetSecAttr(PSECURITY_ATTRIBUTES SecAttr)
{

LPTSTR sd = L"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGW;;;WD)(A;;GR;;;RC)";

ZeroMemory(SecAttr, sizeof(SECURITY_ATTRIBUTES));

ConvertStringSecurityDescriptorToSecurityDescriptor(sd, SDDL_REVISION_1, &SecAttr->lpSecurityDescriptor, NULL);

SecAttr->nLength = sizeof(SECURITY_ATTRIBUTES);
SecAttr->bInheritHandle = TRUE;
}

static VOID WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
{

//... some declarations ...
SECURITY_ATTRIBUTES sa;

//... some stuff like syncronisation, named pipe and so on...
GetSecAttr(&sa);

device = CreateFile(
MY_DEVICE_NAME,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
&sa,                //!!! and this was NULL!!!
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);

if (device == INVALID_HANDLE_VALUE) {/*...*/}
}

Спасибо всем, кто потратил время, чтобы помочь мне!

… и какого черта это работает для Win7?!?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]