2013-11-15 3 views
5

Ok, quindi sto creando un'applicazione C# winforms.Come limitare l'accesso alla cartella/file ad un solo programma?

Voglio scrivere/leggere dal file di dati binari. Ma, voglio mettere quel file in una cartella da qualche parte e non voglio che qualcuno sia in grado di cancellare o modificare il file. Voglio solo che il programma che utilizza il file sia in grado di accedervi.

È possibile? Ho esaminato la struttura di MSDN in merito alla sicurezza dei file e, mentre lo analizzavo, ho visto persone lamentarsi del fatto che se si limita il file a un utente, quella persona può semplicemente ignorare i privilegi e renderla modificabile.

Inoltre, ho pensato a come avrebbe funzionato, considerando in sostanza che vorrei che un processo modificasse solo il file e che il processo potesse avere diversi ID di processo se è aperto e chiuso nel tempo, sembra difficile.

Qualche idea?

+0

'Voglio solo che il programma che utilizza il file sia in grado di accedervi. Domanda seria: perché? A meno che tu non agisca come amministratore della macchina, non hai alcun controllo su ciò che l'utente fa al proprio filesystem. Se sei preoccupato dell'integrità dei dati dell'app, allora ci sono altre cose che puoi fare per verificare detta integrità quando usi i dati. – admdrew

+1

Beh, il mio pensiero è perché vorresti che qualcuno fosse in grado di esaminare i file, trovarne uno che dice "importantData.bin" e aprirlo e iniziare a scherzare con esso. Se una cosa si incasina, hai perso l'integrità dei dati come hai detto. –

+0

Esatto: in tal caso, è possibile creare la propria logica (o cercare in linea per trovare una soluzione) che accetti solo dati "buoni". Questo è un metodo migliore del tentativo di bloccare in qualche modo il filesystem, che non è desiderato dal punto di vista dell'utente. – admdrew

risposta

0

Se si ha il controllo del file system di destinazione prima dell'installazione, impostare alcune autorizzazioni di file e passare da lì. L'utente che accede alla cartella avrà bisogno delle autorizzazioni di lettura al minimo.

0

Eseguire l'app in un gruppo di sicurezza e assegnare i permessi alla cartella e ai file con quel gruppo di sicurezza. Revoca l'accesso per gli altri e rendi readonly

1

È possibile impedire l'accesso ai file mentre il programma è in esecuzione se lo si apre in modo esclusivo.

Tuttavia, quando il programma non è in esecuzione, il file non è più protetto. Quindi qualcuno avrebbe solo bisogno di uccidere il programma per poter accedere al file.

Per proteggere il file mentre il programma non è in esecuzione, è necessario impostare un account utente e assegnargli una password che è nota solo al programma. Quindi imposta le autorizzazioni del file in modo che solo il tuo utente possa accedere al file.

Tuttavia, qualsiasi amministratore può assumere la proprietà del file, quindi anche la protezione del permesso è inutile.

Infine, qualcuno può persino estrarre il disco rigido dal PC e leggere i dati grezzi.

Si potrebbe anche pensare se si desidera proteggere il file o il contenuto del file. Se il contenuto del file è sensibile, pensa alla crittografia.

Dipende davvero dalle vostre esigenze, da quale opzione scegliere.

+0

Grazie per la risposta, non sono troppo preoccupato per chi legge i dati non è sensibile a tale riguardo. Non voglio che qualcuno trovi il file e lo cancelli per sbaglio o per scopo. Cercherò di impostare un utente e le autorizzazioni dell'account. Sembra l'unica possibilità a questo punto e spero che nessuno prenda il controllo dell'amministratore e lo metta in disordine. Questo non sarebbe nemmeno un problema se le macchine avessero accesso a internet, avrei semplicemente installato un server o qualcosa del genere. Ma non lo fanno ... –

+0

Se hai il file system NTFS, prova i flussi di dati alternativi sul file eseguibile o sulla DLL del tuo programma. Sono quasi invisibili. Hai bisogno di strumenti speciali per vederli. Chiunque usi questi strumenti saprebbe anche come diventare proprietario. –

0

Anche se questo non soddisfa tutte le tue esigenze puoi provare IsolatedStorage (Spazio dei nomi System.IO.IsolatedStorage).

How to write and read file in IsolatedStorage

Lo spazio dei nomi System.IO.IsolatedStorage contiene tipi che consentono la creazione e l'utilizzo di negozi isolati. Con questi negozi, è possibile leggere e scrivere i dati a cui un codice meno affidabile non può accedere e impedire l'esposizione di informazioni sensibili che è possibile salvare altrove sul sistema di file . I dati vengono memorizzati in compartimenti isolati dall'attuale utente e dall'assieme in cui esiste il codice. Inoltre, i dati possono essere isolati dal dominio.I profili di roaming possono essere utilizzati in combinazione con lo spazio di archiviazione isolato in modo che i negozi isolati effettuino il viaggio con il profilo dell'utente nel formato . L'enumerazione IsolatedStorageScope indica diversi tipi di isolamento. Per ulteriori informazioni su quando utilizzare l'archiviazione isolata

-1

bene, ho lo stesso problema e ho fatto qualche ricerca su questo tema e ho trovato che proteggere le informazioni in un database accesspoint o qualsiasi altra base di dati di Microsoft con la password e solo una app specifica che ha la password avrà il permesso di leggere/scrivere queste informazioni.

0

Windows 10 versione 1709 ha introdotto Controlled Folder Access. Ciò consente di autorizzare le applicazioni che possono modificare determinate cartelle. Non puoi limitare l'accesso in lettura.