Многопользовательский вход в приложение winforms - PullRequest
1 голос
/ 10 октября 2010

У меня есть приложение winforms в C #, которое требует контроля доступа для определенных форм.Это означает, что приложение запускается под тем же (по умолчанию) пользователем при запуске системы, но некоторые формы должны быть защищены, чтобы только определенные пользователи Windows могли иметь доступ к дополнительным функциям после идентификации себя с помощью имени пользователя и пароля.Для этого шага должна использоваться проверка подлинности Windows.

Теперь сложная часть.Хотя приложение было запущено от имени «обычного» пользователя, я бы хотел, чтобы суперпользователи «вошли» в специальную форму, не перезапуская приложение entiere.

Теперь у меня вопрос.Возможно ли это (например, создать один поток с учетными данными администратора).Или мне нужно настроить другой домен приложения для этого?

Пожалуйста, дайте мне подсказку, может ли пользователь запущенного приложения быть каким-либо образом изменен.

Спасибо.

РЕДАКТИРОВАТЬ

Я заменил администраторов на "определенных пользователей", поскольку привилегированный пользователь мог быть просто другим обычным пользователем, которому предоставляется доступ к специальным функциям при настройке установки.

Ответы [ 3 ]

1 голос
/ 11 октября 2010

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

0 голосов
/ 12 января 2011

Я только что нашел статью о "подражании".На данный момент я не тестировал его, но согласно статье этой должно работать, что вызов метода может выполняться другим пользователем.Может быть, это кому-то поможет.

0 голосов
/ 10 октября 2010

Просто чтобы убедиться, что вы по сути хотите повысить свой процесс до прав администратора только тогда, когда выполняются действия, требующие указанных прав?

Если это так, кажется, что это невозможно. См. Здесь.

Один из способов сделать то, что вы хотите, это использовать аргументы консоли в вашей основной сборке для каждого действия, которое вам нужно сделать. Например, для изменения системного параметра вы можете Process.Start свою основную сборку с аргументом "-change {...}" и запускать ее с правами администратора, сохраняя текущий запущенный процесс с правами текущего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...