Gli elementi essenziali di Android vengono utilizzati durante l'installazione delle applicazioni. Ad ogni app viene assegnato un gruppo e solo quel gruppo può accedere ai dati dell'app. In un sistema basato su Unix è piuttosto semplice da implementare. Windows diventa un po 'più difficile.
Elenchi di controllo di accesso
Quello che puoi fare è creare una personalizzazione < em> Elenco di controllo di accesso discrezionale (DACL) per la tua applicazione. Questi possono essere convertiti in Descrittori di sicurezza che possono essere usati con funzioni come CreateDirectory . Il DACL conterrà tutte le informazioni su chi può accedere alla cartella. In questo caso probabilmente vorrai creare un gruppo Windows per l'applicazione.
Quando crei la tua directory puoi limitare l'accesso al DACL che hai creato. Quando l'applicazione esegue / ha bisogno di accedere alla directory acquisisce il DACL e lo utilizza nelle successive chiamate di sistema. Questi non sono gli oggetti Windows più facili al mondo con cui lavorare, ma fanno quello che vuoi.
Più di quanto probabilmente vorresti sapere sui descrittori di sicurezza di Windows e l'accesso controllo.
Ulteriori informazioni sulla creazione di DACL
Creazione utenti
Puoi creare un Profilo utente in Vista +. Più che un po 'complicato perché Windows non è stato progettato per questo. La rappresentazione di un utente connesso richiede un tipo di token di accesso per l'utente che si sta tentando di utilizzare. Esistono più funzioni che restituiscono un tale token:
BOOL WINAPI ImpersonateLoggedOnUser(
_In_ HANDLE hToken
);
hToken [in]
A handle to a primary or impersonation access token that
represents a logged-on user. This can be a token handle returned by a
call to LogonUser, CreateRestrictedToken,DuplicateToken,
DuplicateTokenEx, OpenProcessToken, or OpenThreadToken functions. If
hToken is a handle to a primary token, the token must have TOKEN_QUERY
and TOKEN_DUPLICATE
access. If hToken is a handle to an impersonation
token, the token must have TOKEN_QUERY
and TOKEN_IMPERSONATE
access.
LogonUser richiede una password. Probabilmente non si desidera eseguire l'hardcode nella propria applicazione. DuplicateToken genera solo token di rappresentazione, che non possono essere utilizzati con CreateProcessAsUser (che è il nostro obiettivo finale). Ora ci restano un sacco di funzioni che richiedono un token esistente da duplicare e partire da. Ciò significa che ti rimane il token dell'utente corrente che non è quello che desideri.
Creare token è praticamente impossibile. Questa operazione viene spesso eseguita solo da LSASS e non sarei sorpreso se l'intero comportamento fosse contrassegnato da antivirus. In Windows questo approccio è probabilmente una cattiva idea, e non vale la pena dei cerchi fiammeggianti che dovresti passare per farlo funzionare.