c # - Hvordan begrænser mappe/undermapper/filer adgang til et program kun?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg opretter en c # winforms ansøgning.


Og jeg har en mappe ScanRepository, og jeg vil forhindre andre programmer og Windows-brugere at åbne denne mappe, undermapper og filer, med en slags adgangskode eller en nøgle, og for at kunne åbne dem i min c # kode.


Nogle forslag?

Bedste reference


Det mest oplagte svar er, at de fleste ting, der lader din bruger ind, lader andre apps komme ind. Hvis du låser en mappe til en bruger, mens den mappe er låst op til den bruger, kan andre apps se i, hvad brugeren kan se i .


Den bedste måde er at få en service i gang som en konto, som brugeren ikke kan bruge. Derefter låser du adgangen til kun den pågældende konto (og system, hvis du vil have sikkerhedskopier af den), så laver du en tjeneste, der håndterer enhver adgang til disse filer og lister osv. Det interfacer med din app. Så i dine brugere øjne de har adgang, i det væsentlige de ikke.

Andre referencer 1


using System.IO;
using System.Security.AccessControl;

private void btnBrowse\_Click(object sender, EventArgs e)
{
   if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
   {
        textBox1.Text = folderBrowserDialog1.SelectedPath;
   }
}

private void btnLock\_Click(object sender, EventArgs e)
{
   try
   {

      string folderPath = textBox1.Text;
      string adminUserName = Environment.UserName;// getting your adminUserName
      DirectorySecurity ds = Directory.GetAccessControl(folderPath);
      FileSystemAccessRule fsa = new FileSystemAccessRule(adminUserName,  FileSystemRights.FullControl, AccessControlType.Deny)

      ds.AddAccessRule(fsa);
      Directory.SetAccessControl(folderPath, ds);
      MessageBox.Show("Locked");
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }       
}

private void btnUnLock\_Click(object sender, EventArgs e)
{
   try
   {
     string folderPath = textBox1.Text;
     string adminUserName = Environment.UserName;// getting your adminUserName
     DirectorySecurity ds = Directory.GetAccessControl(folderPath);
     FileSystemAccessRule fsa = new FileSystemAccessRule(adminUserName,  FileSystemRights.FullControl, AccessControlType.Deny)

     ds.RemoveAccessRule(fsa);
     Directory.SetAccessControl(folderPath, ds);
     MessageBox.Show("UnLocked");
   }
   catch (Exception ex)
   {
     MessageBox.Show(ex.Message);
   } 
}