WedX - журнал о программировании и компьютерных науках

Запустить приложение от имени администратора из приложения формы

Я только начинаю работать с VB.net и создаю простые приложения, которые помогут мне работать лучше. Я создаю приложение формы с помощью Visual Studio Express VB 2008. В этой форме будут кнопки для запуска приложений, установленных на компьютере. В идеале некоторые приложения необходимо запускать как обычный пользователь, а некоторые как администратор. Я бы предоставил пользователю возможность вводить свои учетные данные администратора в той же форме и использовал бы это для запуска приложений, которым требуется доступ администратора. К сожалению, я не могу построить код из-за этой ошибки: значение типа «String» не может быть преобразовано в «System.Security.SecureString». Вот код, написанный:

Private Sub cmd_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_button.Click
Dim passwd As New System.Security.SecureString
Dim proc As New ProcessStartInfo
passwd = password_box.Text
passwd.Clear()
With Proc
    .FileName = "cmd.exe"
    .Username = username_box.Text
    .Passwd = passwd
End With
Process.Start(proc)
End Sub

Надеюсь получить здесь некоторую помощь, пробовал искать в Google и искать на многих форумах, а также в Stackoverflow, но получил результаты для работы на C #, VB.Net не смог найти, или, может быть, что-то было непонятно для меня. Надеюсь, кто-то здесь может помочь.


  • Windows уже имеет (достаточно) понятный пользовательский интерфейс для запроса учетных данных (при необходимости) при запуске приложений от имени администратора. Почему вы создаете собственный пользовательский интерфейс для того же? 02.12.2013
  • Да, я создаю форму с кнопками, которые могут быстро запускать приложения, как нам нужно, путем перехода к этой форме, которую я создал. У нас есть много приложений, которые мы запускаем и используем для поддержки, поэтому нам нужна эта форма для запуска от имени обычного пользователя, а затем те приложения в этой форме, которым требуется доступ администратора, должны получать предварительно заполненные учетные данные администратора и запускаться автоматически без запроса администратора. еще раз учетные данные. 02.12.2013
  • На самом деле нет необходимости начинать заголовок каждого вопроса VB.NET с VB.NET. На самом деле, нам это здесь не нравится. Пожалуйста, прекрати это делать. 23.12.2013

Ответы:


1

Чтобы запустить приложение от имени администратора, вы устанавливаете для свойства .Verb значение "runas", а для свойства UseShellExecute значение True в следующем процессе:

Dim process As New Process()
process.StartInfo.FileName = "cmd.exe "
process.StartInfo.Verb = "runas"
process.StartInfo.UseShellExecute = True
process.Start()

Это запросит учетные данные, если текущий пользователь не является членом группы администраторов, или даст запрос UAC, если они есть (и UAC включен).

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

02.12.2013
  • Спасибо за это, Мэтт, я попробовал это, и это работает, но есть ли способ, которым я могу автоматически заполнять имя пользователя/пароль/домен UAC, не заставляя пользователя вводить его каждый раз? Что-то вроде того, что я сохраняю учетные данные администратора в переменной и передаю их в UAC, когда он появляется, и передаю его, не показывая пользователю UAC? 03.12.2013
  • Нет, ты не можешь этого сделать. UAC — это механизм безопасности. Маловероятно, что MS позволит вам ввести в него учетные данные, так как это был бы простой способ провести атаку грубой силы. 03.12.2013
  • Теперь я придумал другое решение/вариант для этого. У меня будет две формы. «Form1» для приложений без прав администратора и «Form2» для приложений администратора. Теперь я хотел бы вызвать «Form2» из «Form1», когда я нажимаю кнопку на «Form1», он должен вызвать UAC и запросить имя пользователя/пароль администратора, и он должен запустить «Form2» как администратор. Не могли бы вы помочь мне с кодом для вызова «Form2» с подсказкой UAC, пожалуйста? 09.12.2013
  • Токен UAC применяется к процессу, у вас не может быть разных токенов для разных форм. Взгляните на это для получения дополнительной информации: codeproject.com/Articles/16796/ 10.12.2013
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

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


    Для любых предложений по сайту: [email protected]