Страница: 1 |
|
Вопрос: Запуск приложения от имени Администратора
|
Добавлено: 20.01.08 23:56
|
|
Автор вопроса: NikolaZ
|
Долго искал, так и не нашел ни где - как можно запустить приложение созданное на VB.NET от имени другого пользователя. А точнее чтобы оно автоматически запускалось от его имени???? Помогите пожалуйста. Если создать ярлык - можно запускать от имени, но там требуется постоянный ввод пароля и имени при запуске - это не подходит.
Ответить
|
Номер ответа: 2 Автор ответа: NikolaZ
Вопросов: 2 Ответов: 1
|
Профиль | | #2
|
Добавлено: 21.01.08 17:09
|
Идея неплохая, и видимо ничего другого не придумать, но как применить это к разрабатываемому приложению, если учесть что оно и должно сразу запускаться под указанным LOGIN/PASS, да еще и создать PASS в System.Security.SecureString ????
Ответить
|
Номер ответа: 4 Автор ответа: Георгич
Вопросов: 16 Ответов: 52
|
Профиль | | #4
|
Добавлено: 23.01.08 00:03
|
Похожую проблему, в своей проге, я решил так.
Прога создано под учётной записью администратора, далее в программе создан раздел в меню, назначение допуска пользователей к данной проге.
Когда разрешаешь допуск (причём можно дать не полный допуск), то у пользователя создаётся шифрованный файл с личными параметрами администратора (пароль, домен, имя и так далее). В итоге при запуске программы получается так, (используя System.Security.Principal):
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Личность As WindowsIdentity
Личность = WindowsIdentity.GetCurrent
 im Принципиал As New WindowsPrincipal(Личность)
If Принципиал.IsInRole(WindowsBuiltInRole.Administrator) = True Then
‘/если текущий пользователь администратор. то Запусти программу в нужном тебе виде
Else ‘/ если текущий пользователь не администратор то , если существует файл,(к примеру : Dim ПрофильПользователя As System.Environment
Dim ПутьПрофПольз As String
' ПутьПрофПольз = ПрофильПользователя.GetEnvironmentVariable("USERPROFILE".ToString()
If System.IO.File.Exists(ПутьПрофПольз & “\Мой_шифрованный_файл)
Расшифруй файл по указанному пути, используя полученную информацию из файла
Произведи олицетворение пользователя (присвоить текущему пользователю учётную запись администратора ) Dim NewIdentity As WindowsIdentity
NewIdentity = ПолучитьКонкретногоПользователя(UserName, Domain, Password)
 im NewContext As WindowsImpersonationContext
If NewIdentity Is Nothing Then
MsgBox("Не правельные данные"
Else
NewContext = NewIdentity.Impersonate
End If
Else ‘/ если файл не существует то
MsgBox("Вам не назначен допуск, запуск программы запрещён"
Form1.Close()
End If
End Sub
Коротенько примерно так .(код в виде некой подсказки)
Если, нужен подробный код олицетворения могу подкинуть.
И ещё при олицетворении надо позаботиться об ограничении доступа к коду программы и логику проги продумать так , чтобы пользователь не смог лазить туда куда ему не положено, ведь он временно получает права администратора по отношению к данной программе.
Ответить
|
Страница: 1 |
Поиск по форуму