Пробовал так:
- Код: Выделить всё
Dim myProcess As New Process()
myProcess.StartInfo.FileName = "App.exe"
myProcess.StartInfo.WorkingDirectory = My.Application.Info.DirectoryPath
myProcess.StartInfo.Verb = "Open"
Dim s As String = "Password"
Dim ApplicationPasswords As New System.Security.SecureString()
For Each c As Char In s
ApplicationPasswords.AppendChar(c)
Next
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.UserName = "User"
myProcess.StartInfo.Password = ApplicationPasswords
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
myProcess.Start()
Из сеанса администратора работает, в сеансе простого пользователя выдаёт ошибку: "Требуеться повышение".
Тогда я попробовал класс RunAs_Impersonator: http://williamfaulkner.co.uk/wordpress/2009/04/vbnet-run-as-administrator-impersonate-a-user-2008/.
- Код: Выделить всё
Dim imp As New RunAs_Impersonator
imp.ImpersonateStart("", "User", "Password")
Dim myProcess As New Process()
myProcess.StartInfo.FileName = "App.exe"
myProcess.StartInfo.WorkingDirectory = My.Application.Info.DirectoryPath
imp.ImpersonateStop
Что-то не помогло, приложение запускается, но выдаёт какую-то ошибку инициализации.
Как это самое повышение сделать без участия пользователя?