У меня есть приложение, разработанное в vb.net, которому нужны права администратора. Я установил level = "requireAdministrator" в манифесте приложения. Мой клиент хочет, чтобы это приложение запускалось локальным пользователем из-за некоторых ограничений в их организации. Поэтому я создал еще одно приложение «Launcher», которое фактически сохранит учетные данные администратора в зашифрованном формате и будет использовать сохраненные учетные данные для запуска «исходного» приложения.
Все работает нормально, если я использую учетную запись «Администратор» (встроенная учетная запись). Но если я использую учетные данные вручную созданной учетной записи администратора — строка process.start() выдает ошибку «Запрошенная операция требует повышения прав» Я действительно не мог определить разницу между встроенным администратором и созданным вручную учетная запись администратора. Я подтвердил, что оба пользователя (встроенные и созданные вручную) являются членами администраторов и домашних пользователей. Я перепробовал все возможности, создав разных пользователей с разными группами пользователей и даже с разными ОС (Windows 7 и Windows 10 — как 32-, так и 64-разрядные версии) — но все работает так же, как описано выше. Есть ли что-то, что я должен изменить в своем коде?
Dim psi As New System.Diagnostics.ProcessStartInfo()
psi.FileName = (AppToStart)
psi.RedirectStandardError = True
psi.RedirectStandardOutput = True
psi.CreateNoWindow = True
psi.UseShellExecute = False
psi.UserName = TbUser.Text
psi.Password = ConvertToSecureString(TbPass.Text)
psi.Domain = ""
Dim p As Process = Process.Start(psi)
Дополнительная информация: здесь я запускаю это приложение «Launcher» как обычный пользователь (не администратор), и приложение работает хорошо, и оно действительно повышает привилегии, если
TbUser.Text = «Администратор» и TbPass.Text = 123 (пароль администратора).
Но это не повышение привилегий, если
TbUser.Text = «Adminuser» (который также является администратором, принадлежит к той же группе «Администраторы») и TbPass.Text = 321 (пароль для Adminuser).