1

На моей личной машине с Win7 моя учетная запись пользователя является стандартной, и есть также учетная запись администратора, которую я, очевидно, контролирую. Одно приложение, которое я запускаю с Windows, требует прав администратора для корректной работы. Это боковая панель AIDA64, если кому-то интересно.

Я искал на этом сайте, в Интернете и на форумах поддержки AIDA64 идеи о том, как заставить его работать, но безрезультатно. Я запланировал запуск задач под учетной записью администратора, но в этом случае он даже не показывается как работающий для обычного пользователя (хотя, если обычный пользователь запускает его вручную "как администратор", он работает нормально). В качестве альтернативы я могу запланировать это для обычного пользователя с "самыми высокими привилегиями", которые я видел рекомендованные десятки раз, но это не работает, так как он использует только самые высокие привилегии пользователя, а не права администратора, даже если администратор тот, кто планирует задачу!

Самым близким к настоящему решению, которое я видел, является использование runas /savedcred в запланированной задаче, но это огромная дыра в безопасности, которую никто не рекомендует. Если это единственный способ сделать это, я бы предпочел просто сделать мою учетную запись администратора и покончить с этим.

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

2 ответа2

1

Есть несколько способов запустить приложение

  1. Откройте CMD от имени администратора и перейдите в каталог, где хранится приложение, и попробуйте запустить приложение с помощью оболочки cmd.

  2. Снова откройте командную оболочку cmd в качестве администратора и используйте PsExec для запуска приложения с использованием другой учетной записи администратора и просмотра обозревателя процессоров, если приложение запускается в другом сеансе (я предполагаю, что вы создадите другого пользователя-администратора на своей машине)

  3. Попробуйте запустить приложение с повышенным токеном, используя опцию PsExec -h из командной консоли администратора, если она работает, затем приложение также запустится из учетной записи администратора по умолчанию на вашем компьютере, если оно включено в compmgmt.msc.

  4. используя ту же командную оболочку с повышенными привилегиями, попробуйте запустить приложение в сеансе 0, посмотрите, работает ли оно, используя приложение Psexec -s -i 0, и просмотрите проводник процессов, если оно действительно запущено.

  5. Вы также можете попробовать запустить приложение в текущем сеансе под системной учетной записью и посмотреть, работает ли оно.

  6. Вы также можете использовать psexec для запуска приложения под привилегиями пользователя из командной консоли с помощью параметра psexec -u user -p password и посмотреть, запущено ли оно.

Также попробуйте У опции taskchedular запустить ваше приложение, и, наконец, вы можете использовать проводник процессора> опции> выбрать столбцы> просмотреть командную строку, чтобы точно узнать, какую команду использует приложение для запуска, когда оно запускается с правами администратора, как вы сказали, тогда вы можете использовать то же самое команда для запуска приложения, с помощью которой вы также можете отладить, почему приложение не запускается, используя расписание задач и обучение из проводника процессора

1

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

  • скачать PsTools: https://technet.microsoft.com/en-us/sysinternals/psexec.aspx, распаковать, добавить каталог в% PATH%,
  • создать командный файл:

    @echo off
    for /f "tokens=3 delims= " %%a in ('qwinsta ^| find /i "active"') do ( set SID=%%a )
    PsExec.exe -i %SID% -h %*
    

    Возможно, вам придется заменить "активный" на ваш локализованный термин, если у вас есть локализованная версия Windows (например, в польском Windows это "aktywna"). Просто проверьте это с помощью qwinsta . Этот пакетный файл определяет SessionID активного сеанса и запускает команду с учетными данными текущего пользователя, но в сеансе обнаруженного SessionID.

  • запустите планировщик задач от имени администратора и создайте задачу. Настройте его на запуск с правами администратора, независимо от того, вошел ли пользователь в систему. Установите желаемые критерии для запуска задачи. Установите действие для запуска вашего пакетного файла и установите строку параметров в:

    -d -u admin_user -p password yourApp.exe
    

    Если ваше приложение CLI, опустите -d . Необходимо указать имя пользователя и пароль учетной записи, которая используется для этой задачи, в противном случае приложения с графическим интерфейсом не будут работать правильно (я не знаю, почему; возможно, приложения CLI будут работать нормально, я не проверял). Вместо ввода имени пользователя и пароля вы можете указать ключ -s , но тогда ваше приложение будет работать с локальной системной учетной записью.

Эффект от запуска задачи аналогичен щелчку правой кнопкой мыши исполняемого файла и выбору «Запуск от имени администратора», но без появления UAC. Таким образом, после создания командного файла вы можете легко создавать следующие задачи, и пакет будет запускать их в активном сеансе. Скорее всего, безопасность не идеальна, если только вашим пользователям не доверяют, но, по крайней мере, ваш пароль администратора не хранится в виде открытого текста в командном файле, а также сама задача не видна обычным пользователям. Чтобы немного повысить безопасность, вы можете сделать как командный файл, так и целевой исполняемый файл недоступными для пользователей, кроме администратора. И вам нужно убедиться, что ни у кого нет логина, содержащего «активный» или любое другое слово, которое используется в вашей локальной версии Windoze, или вам придется переформировать пакет и добавить другой for , усложняющего его (или использовать PowerShell или UnxUtils). ).

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