C # сохранить каталог разрешений - PullRequest
3 голосов
/ 22 мая 2011

Я пытался найти способ сохранить разрешения для каталога.В настоящее время я использую SetACL, чтобы помочь.Если бы я мог изменить владельца на каталоги / реестр без него, это было бы предпочтительным, но это другая история.Пример:

Проверка текущего владельца и разрешений для этого владельца.Измените права доступа и владельца на нажатие кнопки> изменить его обратно на исходное при нажатии другой кнопки.

Чтобы сохранить вопрос о том, почему моя команда оказывает техническую поддержку.Мы удаленно в компьютер, выполнить наши т / с и уйти.Мы должны иметь возможность изменять разрешения, а затем возвращать их обратно в прежнее состояние.

Любая помощь приветствуется.

1 Ответ

4 голосов
/ 22 мая 2011

Если вы используете пространства имен System.Management и System.Management.Instrumentation, вы можете использовать метод Directory.GetAccessControl для получения доступа к папке.Затем вы можете использовать методы AddAccessRule и SetAccessControl, чтобы фактически применить ваши новые разрешения.Когда вы закончите, вы можете удалить свои новые разрешения.Вот статья, в которой рассказывается, как изменить разрешения для папки:

http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/

Основной код, используемый этим автором, выглядит следующим образом:

DirectoryInfo myDirectoryInfo = new DirectoryInfo(yourFolderHere);

// Get a DirectorySecurity object that represents the 
// current security settings.
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();

// Builds a new user string for who we want to give permissions to
string User = System.Environment.UserDomainName + "\\" + yourUserName; 

// Creates the permissions to apply 
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, 
                                  FileSystemRights.FullControl, AccessControlType.Allow));

// Set the new access settings. 
myDirectoryInfo.SetAccessControl(myDirectorySecurity);

// Showing a Success Message
MessageBox.Show("Permissions Altered Successfully");
}

Что касается установки владельца, вот хорошая статья о том, как это сделать:

C # - Как использовать DirectorySecurity.SetOwner ()?У меня проблемы

Однако, если вы хотите назначить владельцем кого-то другого (поскольку я предполагаю, что вам не нужно назначать права владения пользователю, когда у него уже есть доступ кназначить права владения), этот метод не работает, я не верю.Я нашел документацию о том, как установить владельца, чтобы быть кем-то, кроме вас.Вот ссылка:

http://blog.salamandersoft.co.uk/index.php/2009/10/setting-the-owner-of-files-and-directories-in-c/

...