1

Я являюсь членом группы администраторов в Windows 7. Мне нужно запустить foo.exe из Cmd или Powershell. Для работы exe-файла требуется высота, но высота не указана в его манифесте.

Обычно я должен сделать start . чтобы открыть проводник, щелкните правой кнопкой мыши исполняемый файл и выберите «Запуск от имени администратора».

Есть ли более простой способ? Я не собираюсь отключать UAC, я не хочу, чтобы пароль запоминал пароли или чтобы не было подсказки. Я просто хочу избежать необходимости запуска окна проводника.

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

Я просто хочу вызвать обычное приглашение UAC без промежуточного шага.

Чтобы уточнить, я хочу следующую последовательность:

  1. Windows 7, UAC включен, я в группе администраторов, приглашение UAC настроено на ответ да / нет.

  2. Откройте командную строку без повышенных прав, перейдите в глубокую папку и выполните другие задачи.

  3. Я запускаю 'elevate-command-sequence foo.exe', и приглашение UAC открывается точно так же, как и при щелчке правой кнопкой мыши в Проводнике. Текущий каталог для foo.exe установлен в глубокую папку, в которой я нахожусь.

Интересно, существует ли такая elevate-command-sequence в cmd или powershell из коробки?

3 ответа3

2

Командная строка не может запускать приложения с повышенными правами, если сама не была запущена с повышенными правами. Это отстой, но это только часть поведения Windows.

Если вы хотите обойти это, вы должны использовать сторонний инструмент, который запустит программу с повышенными правами для вас. Из некоторого быстрого поиска в Google я нашел ELE, это позволит вам запустить программу с повышенными правами из командной строки без повышенных прав (после всплывающего UAC, конечно)

c:\>ele foo.exe  

Я уверен, что есть еще миллион программ, которые делают это, черт возьми, я мог бы написать одну на C # здесь, в этом ответе.

namespace Sandbox_Console
{
    public class Program
    {

        private static void Main(string[] args)
        {
            Process newProcess = new Process();
            newProcess.StartInfo.Verb = "runas";
            newProcess.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
            newProcess.StartInfo.FileName = args[0];
            newProcess.StartInfo.Arguments = String.Join(" ", args, 1, args.Length - 1);
            newProcess.Start();
        }
    }
}

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

1

Может быть, это изменение настроек групповой политики может помочь вам:

  1. Пуск -> run -> gpedit.msc

  2. Перейдите к Computer Configuration --> Policies-->Windows Settings-->Security Settings -->Local Policies-->Security Options

3.Изменить behavior of elevation prompt for administrator (вы можете получить, как вы хотите)

Перезагрузите компьютер, чтобы изменения вступили в силу

0

На этот вопрос разумно дан ответ: https://superuser.com/a/420317/98646

powershell Start-Process cmd.exe -Verb RunAs

Конечно, cmd.exe это просто заполнитель.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .