Автоматически запускать программу от имени администратора в VB.NET - PullRequest
0 голосов
/ 10 ноября 2011

Я занимаюсь разработкой приложения на основе VB.NET, которое требует административных привилегий для правильной работы.Тем не менее, я просмотрел несколько учебных пособий онлайн, и в них упоминалось, как это сделать с помощью файла mainifest.Проблема с этой техникой заключается в том, что всякий раз, когда программа открывается, мне нужно ввести пароль администратора, однако я хочу, чтобы это происходило автоматически.(Пользователь не должен вводить пароль администратора, пароль должен вводиться с уровня кода)

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

Dim securePass As New Security.SecureString()
Dim pass As String = "password"

For Each c As Char In pass
    securePass.AppendChar(c)
Next

' If there isn't a domain, set the argument to 'Nothing', as demonstrated below.
Process.Start("testsoftware\WinKBSel\WinKBSel1003.exe", "username", pass, Nothing)

Может кто-нибудь сообщить мне, как я могу это сделать, не требуя от пользователя ввода пароля администратора?

Ответы [ 4 ]

1 голос
/ 10 ноября 2011

Возможно, вам лучше всего разделить приложение на части, если бы у вас была фоновая служба, работающая под учетной записью администратора, ваше приложение могло бы использовать ее для выполнения задач, требующих повышенных привилегий. UAC предназначен для защиты пользователя от самих себя, вы можете обойти его, добавив бэкэнд-сервис ... но будьте очень осторожны, открывая дыры таким образом, поскольку они могут быть использованы другими приложениями / вирусами. Хранение пароля администратора внутри приложения всегда плохая идея, поскольку приложение может быть декомпилировано и пароль извлечен.

1 голос
/ 10 ноября 2011

Вы не можете создать программу, которая будет автоматически входить в систему как пользователь, если имя пользователя / пароль уже известны.

Это означает, что вы либо ограничены работой в системах, где ваше приложение уже знает эти учетные данные, либо ваш пользователь должен ввести учетные данные в ваше приложение, либо ваш пользователь должен использовать функцию «Запуск от имени» в Windows, чтобы использовать правильный пользователь.

Если бы то, что вы предлагаете, действительно было возможно, это означало бы огромную дыру в безопасности: вы могли бы запускать любой код, как любой пользователь, без предварительной проверки подлинности. Это не очень хорошая вещь!

Подумайте об этом так: если бы вам продали программу, которая автоматически входила бы в систему как администратор даже без вашего разрешения , как бы вы себя чувствовали?

0 голосов
/ 03 июня 2012

Вам не нужен код для этого действия, UAC создан, чтобы вы могли автоматически входить в систему без разрешения пользователя.Что вы можете сделать, это использовать манифест и изменить запуск, чтобы при запуске приложения оно запускалось от имени администратора и запрашивало разрешение!Измените манифест.посмотрите!

0 голосов
/ 10 ноября 2011

UAC разработан так, что вы не можете делать то, что вы хотите.UAC гарантирует, что для повышения пользователь должен пройти через диалог UAC (либо диалог согласия администратора, либо диалог через плечо).Вам необходимо адаптировать свои ожидания к реальности UAC.

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