Impossibile accedere alla directory del punto di riappartenza del driver del filtro montato dall'account utente in Windows XP X64 Prof
-
12-12-2019 - |
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!
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?!?