Изменить ACL на вновь созданной оконной станции, чтобы запретить создание процессов пользователем в C # - PullRequest
1 голос
/ 30 ноября 2011

Нам было поручено создать сервис на C #, который создает отдельный рабочий стол из рабочего стола текущего пользователя.Сервис будет переключаться назад и вперед через определенные промежутки времени, выполняя различные задачи.Мы получили услугу для создания нового рабочего стола с оконной станцией, но одна из задач состоит в том, чтобы запустить рабочий стол как пользователь, отличный от того, кто его создал (и теперь владеет им).Мы создали пользователя Windows, и программа использует его токен для доступа к рабочему столу.

Теперь вот немного хитрости.Нам нужно изменить ACL для настольных компьютеров new и ACE, которые говорят, что новому пользователю не разрешено создавать процессы на этом настольном компьютере, то есть запрещать все.Я искал ссылку на MSDN, и похоже, что путь - это получить SACL оконных станций с GetSecurityInfo () , изменить его, а затем снова установить с помощью GetSecurityInfo ().

Однако это все, что я понял, и, если честно, я понятия не имею, правильный ли это путь.Это только кажется мне правильным.У меня следующие проблемы:

  1. Я не могу заставить вышеописанные методы работать, потому что не могу получить доступ к константам / битовым флагам _SE_OBJECT_TYPE и SECURITY_INFORMATION, потому что я не понимаю, как вы включаете ихзаголовочные файлы в c #.
  2. Как изменить ACE ACL, чтобы запретить создание процесса для отдельного пользователя, какие функции вы используете?
  3. Кто-нибудь знает более простой и / или более умный способ изменения ACE дляновый рабочий стол?
...