Impossibile accedere alla directory del punto di riappartenza del driver del filtro montato dall'account utente in Windows XP X64 Prof

StackOverflow https://stackoverflow.com//questions/12692755

Domanda

Ho creato un "file system speciale" per un'applicazione di sicurezza molto speciale.

Creo un punto di ripasso utilizzando una directory vuota. Dietro questo punto di ripase è un driver del filtro, che ha maneggiato la comunicazione tra NTFS e un programma USERMODE, che sta facendo qualche crittografia / decrittografia e controllo del controllo (una miscela tra fusibile, TrueCrypt, Ramdisc, ...). Il tutto è nativo in c / c ++ e funziona fine win7 x64.

Ora ho il bel compito per farlo funzionare per Windwos XP X64 Professional. Quando l'intera applicazione è in esecuzione con i diritti di amministrazione funziona bene, ma quando passerò all'account utente, non riesco ad accedere alla directory montata.

The Mounter e il "Sistema system speciale" (il nome ITS) sono servizi di sistema e un'altra app deve essere eseguita in Account utente (COM pertinente), l'operazione di montaggio è riuscita (quando passerò su Amministratore Account dopo il montaggio Funzionamento Posso accedere alla directory), anche le altre parti dell'applicazione funzionano, ma l'unica cosa che non riesco a gestire è ottenere l'accesso a questa reperità molto.

Ho dato ai "tutti" e al gruppo Utenti e all'utente specifico tutte le autorizzazioni per il driver, la libreria (collegamento tra driver e sfs), il mounter e il file system speciale e ha fatto molto nel registro. Ho anche dato queste autorizzazioni alla dir montata (tutti i rigths, proprietario, ...) ma nulla funziona.

Il debug Outprint mostra, che la richiesta per la directory o i file all'interno non arriva mai a "SFS". Sembra che lo Io-Manager non invia mai qualcosa a questa aggiunta. Un altro problema è che non riesco a gestire tutti gli outprint di debug dal sistema operativo (avvio nella modalità di debug locale e utilizzare DebugView.exe da Sysinternals), ma questa è un'altra storia.

Cosa mi è mancato? Qual è la differenza tra il sistema di sicurezza di XP e Win7? Ci sono restrizioni di base in XP che non conosco?

Si prega di chiedere se sono necessari snippet del codice.

Qualsiasi consiglio o idea è il benvenuto!

È stato utile?

Soluzione

Trovato!

Ho dimenticato di impostare la sicurezza per il dispositivo stesso! Che cosa brutta non trovarlo prima!: - (

Questa è la sezione nel servizio di montaggio:

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) {/*...*/}
}
.

Grazie a tutti voi che ha trascorso del tempo per aiutarmi!

... E perché diavolo ha fatto questo lavoro per Win7?!?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top