2014-11-12 5 views
6

Sto tentando di concedere l'autorizzazione per accedere alla cartella all'utente, ma quando sto cercando di eseguire il programma, l'errore indica: .Non è stato possibile tradurre alcuni o tutti i riferimenti di identità C#

Ecco il codice che sto usando:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 
using System.Security; 
using System.Security.AccessControl; 
using System.Security.Principal; 
using System.Management; 
using System.Management.Instrumentation; 

namespace FolderLock 
{ 
    public partial class Lock : Form 
    { 
     public Lock() 
     { 
      InitializeComponent(); 

      SetAccess(); 
     } 

     private void Lock_Load(object sender, EventArgs e) 
     { 

     } 

     public void SetAccess() 
     { 
      DirectoryInfo myDirectoryInfo = new DirectoryInfo("C:/Users/Trov/Desktop/Test"); 

      DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl(); 

      string User = System.Environment.UserDomainName + "\\" + "92111092"; 

      myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.Read, AccessControlType.Deny)); 

      myDirectoryInfo.SetAccessControl(myDirectorySecurity); 
     } 

    } 
} 
+0

Quale linea sta fallendo? –

+0

questa riga signore: 'myDirectorySecurity.AddAccessRule (nuovo FileSystemAccessRule (Utente, FileSystemRights.Read, AccessControlType.Deny))' – Kaoru

+0

Quale versione del sistema operativo? –

risposta

7

ho trovato un modo, invece di cercare di consentire o negare l'accesso alla cartella da utenti specifici, ho solo creare un noto utenti autenticati negare o consentire l'accesso alla cartella.

Ecco il codice:

public void SetAccess() 
     { 
      DirectoryInfo myDirectoryInfo = new DirectoryInfo(@"C:/Users/Trov/Desktop/Test"); 

      var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); 

      DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl(); 

      myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(sid, FileSystemRights.Read, AccessControlType.Deny)); 

      myDirectoryInfo.SetAccessControl(myDirectorySecurity); 

      this.Hide(); 

      this.Close(); 
     } 

Grazie

+0

L'utilizzo di SID invece di un nome utente ha corretto l'errore per me. – John81

Problemi correlati