Програмний установка файлова система NTFS дозволів для папки за допомогою Active Directory Services Interfaces мовою Microsoft Visual c#

Застосовується до: Windows Servers

ОСНОВНІ ВІДОМОСТІ


У цій статті описується програмним способом встановити дозволи папки файлової системи NTFS за допомогою Active Directory Service Interfaces (ADSI) мовою Microsoft Visual c#.

Додаткові відомості


Збірки на зразок застосунку

Щоб запустити наведений нижче приклад-застосунок, має бути ADsSecurity.dll. log і ADsSecurity.dll txt, що інстальовано. Ці файли входять до складу на інструментарій розробника (SDK) для служби Active Directory інтерфейси 2.5. Щоб завантажити пакет SDK, для служби Active Directory інтерфейси 2.5, перейдіть на веб-сайт корпорації Майкрософт:Примітка. Для запуску на зразок застосунку, потрібно мати права адміністратора на комп'ютері. Щоб створити зразок застосунку, виконайте такі дії:
  1. Запустіть Microsoft Visual Studio .NET або Microsoft Visual Studio 2005 р.
  2. У меню " файл " виберітьстворитита пункт проект.
  3. Visual C# проектівнатисніть кнопкуЗастосунку Windowsшаблони. Примітка. Visual Studio 2005 Visual C# проектів змінюється на Visual C#.
  4. У полі " ім'я " введітьNTFSPermissionsта натисніть кнопкуOK.
  5. Додавання елемента керування кнопку форма Form1.
  6. У проекті меню натисніть кнопку " Додати посилання на".
  7. На вкладці COM , установіть такі відомості та натисніть кнопку OK:
    • Активний DS-типу бібліотеки
    • Бібліотеки типів в ADsSecurity 2.5
  8. Форма Form1 , клацніть правою кнопкою миші та виберітьКод.
  9. На початок вихідний код у вигляді Form1, додайте такі за допомогою команди.
    using ADSSECURITYLib;using ActiveDs;
  10. Додати клас Form1 одним із нижченаведених способів.
    public void SetPermissions(String vPath, String UserName ){ADsSecurity objADsSec;SecurityDescriptor objSecDes;AccessControlList objDAcl;AccessControlEntry objAce1;AccessControlEntry objAce2;Object objSIdHex;ADsSID objSId;objADsSec = new ADsSecurityClass();objSecDes = (SecurityDescriptor) (objADsSec.GetSecurityDescriptor("FILE://" + vPath));objDAcl = (AccessControlList)objSecDes.DiscretionaryAcl;objSId = new ADsSIDClass();objSId.SetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SAM, UserName.ToString());objSIdHex = objSId.GetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SDDL);// Add a new access control entry (ACE) object (objAce) so that the user has Full Control permissions on NTFS file system files.objAce1 = new AccessControlEntryClass();objAce1.Trustee = (objSIdHex).ToString();objAce1.AccessMask = (int)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;objAce1.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;objAce1.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE | (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ONLY_ACE | 1;objDAcl.AddAce(objAce1);// Add a new access control entry object (objAce) so that the user has Full Control permissions on NTFS file system folders.objAce2 = new AccessControlEntryClass();objAce2.Trustee = (objSIdHex).ToString();objAce2.AccessMask =  (int)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;objAce2.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;objAce2.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE | 1;objDAcl.AddAce(objAce2);objSecDes.DiscretionaryAcl = objDAcl;// Set permissions on the NTFS file system folder.objADsSec.SetSecurityDescriptor(objSecDes,"FILE://" + vPath);}
  11. Перейдіть на вкладку Form1.cs [Design] , щоб повернутися до режиму конструктора.
  12. Двічі клацніть на button1. Код подіїbutton1_Click замініть наведений нижче код.
    private void button1_Click(object sender, System.EventArgs e){try {// Set <Domain> to your domain name.// Set <UserName> to the user account.SetPermissions("C:\\Test", "<Domain>\\<UserName>");MessageBox.Show("Full Access control granted.");}catch (Exception ex){MessageBox.Show(ex.Message);}}
    Примітка. Замініть < домен > імені домену. Замініть ім'я користувача, якому потрібно надати дозвіл < ім'я _ користувача > .
  13. У меню створити виберіть пункт " Побудувати рішення".

Тест на зразок застосунку

  1. Створіть папку, у кореневій папці диска C. Ім'я папки Test.
  2. У провіднику Windows тестовупапку, клацніть правою кнопкою миші та виберіть пункт Властивості.
  3. У діалоговому вікні Властивостей для перевірки перейдіть на вкладку безпеки .
  4. Виберіть обліковий запис домену, для якого ви працюєте в іншому. Якщо облікового запису немає у списку, клацніть Додатиі додайте обліковий запис домену до списку.
  5. З дозволамиклацніть, щоб зняти прапорецьПовний доступ обмежити дозволи для папки "Test", для цього користувача. Натисніть кнопку "OK".
  6. Запустіть застосунок NTFSPermission.exe. За промовчанням відображаєтьсяForm1 .
  7. Виберіть button1. З'являється таке повідомлення:
    Повне керування доступом, наданий.
  8. Натисніть кнопку "ОК" , щоб закрити вікно повідомлення.
  9. Закрийте у формі, щоб вийти з програми.
  10. У провіднику Windows, відкрийте папку, C:\ .
  11. Перевірка папки, клацніть правою кнопкою миші та виберіть Властивості.
  12. У діалоговому вікні Властивостей для перевірки перейдіть на вкладку безпеки .
  13. Виберіть обліковий запис домену, для якого в працює в іншому а потім переконайтеся, дозволи папку "Test".
Тепер, вказаного користувача має дозволи на повний доступ папку "Test".

Посилання


Щоб отримати додаткові відомості клацніть номер статті в базі знань Microsoft Knowledge Base:
279682 , як додати запис керування доступом до папки NTFS за допомогою ADsSecurity.dll
Як 266461 , що встановлено автоматичний успадкування дозволів для файлу або папки за допомогою ADSI