Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Установка msi пакета не из-под админа

Автор: Trolzen
Дата сообщения: 14.02.2012 01:58
Как запустить установку msi-пакета находясь под непривилегированным пользователем? Чтобы, не "вылогиниваясь", запустить некую команду и ввести пароль админа.

Добавлено:
Ну, или другими словами, как заставить msiexec запросить пароль админа?
Автор: Lars55
Дата сообщения: 14.02.2012 02:42
Trolzen
Могу предложить не мучить *.msi, а запускать их из консоли runas'ом. Или запустить сторонний файлменеджер с правами админа, а уже из него запустить пакет установки.
Автор: irv2009
Дата сообщения: 14.02.2012 13:48
если у вас 7ка тогда можно создать правило установки используя APPLOCKER.
Автор: Trolzen
Дата сообщения: 14.02.2012 15:21
irv2009
Нет, не семёрка, XP.

Lars55
Спасибо за подсказку. Получается, но недостаточно удобно. Достаёт, что приходится писать это "/user:Администратор". Сделал батник-обёртку но осталось неудобство: при запуске меняется текущаяя папка на %SystemRoot%\System32, поэтому приходится писать полные пути.
Автор: Lars55
Дата сообщения: 15.02.2012 02:56
Trolzen
В чем сложность с батником? Есть много пакетов, которые приходится регулярно запускать с правами админа и каждый раз для нового пакета писать свое имя и путь в батнике?

Создайте специальную папку для пакетов и впишите путь в батник, а пакеты перед установкой скидывайте в эту папку. Тогда останется поправить только имя пакета (в батнике или имя файла самого пакета).

Или уточните суть задачи, возможно я не совсем верно понял, что вы хотите сделать.
Автор: BVV63
Дата сообщения: 15.02.2012 04:32
Trolzen

Цитата:
Достаёт, что приходится писать это "/user:Администратор".

Вроде, если запустить Runas с опцией /SaveCred, то в дальнейшем логин можно не вводить.
Автор: Trolzen
Дата сообщения: 17.02.2012 03:42
Lars55

Цитата:
Или уточните суть задачи, возможно я не совсем верно понял, что вы хотите сделать.

Суть в следующем. Найти какой-нибудь способ, чтобы, когда требуется установить скачанный msi, который необязательно лежит в заранее определённом месте, можно было это сделать минимальным количеством телодвижений. Например, для установщиков в виде exe-файлов, достаточно сделать ПКМ - запустить от имени... Вот и хотелось бы аналогичной лёгкости.
Или найти причину, почему у меня по shift+ПКМ не показывается такой пункт (тут люди утверждают, что он должен показываться).

BVV63

Цитата:
Вроде, если запустить Runas с опцией /SaveCred, то в дальнейшем логин можно не вводить.

У меня такого нет
[more]C:\>runas
Использование команды RUNAS:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/user:<имя пользователя> <программа>

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/smartcard [/user:<имя пользователя>] <программа>

/noprofile Не загружать профиль пользователя. Это приводит к более
быстрой загрузке приложения, но может стать причиной
неправильной работы некоторых приложений.
/profile Загружать профиль пользователя.
Этот параметр установлен по умолчанию.
/env Использовать текущие параметры среды.
/netonly Учетные данные предназначены только для удаленного
доступа.
/savecred Использовать учетные данные, сохраненные пользователем.
Этот параметр не доступен в Windows XP Home Edition
и будет проигнорирован.
/smartcard Для указания учетных данных используется
смарт-карта.
/user <имя пользователя> должно быть в виде USER@DOMAIN или DOMAIN\USER
<программа> Командная строка для EXE. См. примеры ниже.

Примеры:
> runas /profile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"Мой файл.txt\""

Примечание: вводите пароль пользователя только тогда, когда он запрашивается.
Примечание: формат записи USER@DOMAIN несовместим с параметром /netonly.
Примечание: параметр /profile несовместим с параметром /netonly.[/more]
Напоминаю: Windows XP

Добавлено:
И потом, /SaveCred всё равно не решит проблему, потому как это-то уже решено батником-обёрткой, проблема в том, что runas при запуске меняет рабочую папку.

Если вдруг кому интересно, батник выглядит вот так:
[more=sudo.bat]@echo off
setlocal

runas /user:Администратор "%*"[/more]
Автор: BVV63
Дата сообщения: 17.02.2012 04:37
Trolzen

Цитата:
У меня такого нет
Напоминаю: Windows XP

Да, и что? У Вас Home Edition? Для него опция /SaveCred неактивна, для остальных версий - работает.

Цитата:
проблема в том, что runas при запуске меняет рабочую папку.

??? Не должнен. Подробнее, пожалуйста: на какую он меняет. Но даже если меняет, команды PushD и PopD должны помочь.
Автор: Lars55
Дата сообщения: 17.02.2012 05:54
Trolzen
Упростите себе жизнь - договоритесь скидывать все установочные пакеты в одну специльную папку. Врядли у разброса файлов есть глубинный смысл.

А дальше сделайте где-нибудь батник аля:

set /p msi_name="Enter file name - "
cd "D:\Msi_install\"
runas /users:admin "%msi_name%"

В итоге нужно будет запустить батник, ввести имя пакета, пароль админа и вуаля! Вроде проще уже некуда.
Автор: Trolzen
Дата сообщения: 17.02.2012 08:35
BVV63

Цитата:
Да, и что? У Вас Home Edition? Для него опция /SaveCred неактивна, для остальных версий - работает.

Извиняюсь, в моём же сообщении эта опция описана, а я пропустил.


Цитата:
Подробнее, пожалуйста: на какую он меняет. Но даже если меняет, команды PushD и PopD должны помочь.

Я уже хотел расписать, как я запускаю runas ... cmd, а он мне выдаёт новое окно с C:\Windows\System32 в качестве рабочей папки, но задумался: а может это cmd меняет? Как подтвердить/опровергнуть -- я пока не придумал.
Далее, как тут поможет pushd/popd? Хоть сколько "пушей"-"попов" сделай, всё равно окно откроется с C:\Windows\System32

Добавлено:
Lars55

Цитата:
Упростите себе жизнь - договоритесь скидывать все установочные пакеты в одну специльную папку.

Согласен, обходных путей можно много напридумывать. Можно вообще подойти так: "Да зачем это всё мозгокрутство? Долго что ли перелогиниться и установить?" Но хотелось бы всё-таки делать как мне удобно, а не компьютеру.
Автор: BVV63
Дата сообщения: 17.02.2012 08:44
Trolzen
В начале батника пропишите:

Код: %~D0
CD %~P0
Автор: Trolzen
Дата сообщения: 17.02.2012 08:52
BVV63
Нет, всё-таки это runas меняет папку.

1. C:\soft>msiexec /i package.msi

Установка запускается.

2. C:\soft>runas /user:Администратор "msiexec /i package.msi"
Введите пароль для Администратор:
Попытка запуска msiexec /i package.msi от имени пользователя "COMP\Администратор" ...

И выдаётся окошко "Не удаётся открыть пакет установки...".

Добавлено:
BVV63

Цитата:
текущая папка сменится на ту, где находится батник.

Хм, изящно.

Однако ж это для каждого установочного пакета батник писать придётся.
Автор: BVV63
Дата сообщения: 17.02.2012 09:13
Trolzen

Цитата:
Однако ж это для каждого установочного пакета батник писать придётся.

Зачем?
И, кстати, можно в батнике имена установочных пакетов не менять, а переименовывать сами пакеты - им на своё имя пофиг.
Ещё вариант: использовать шедулер (at.exe или schtasks.exe). Но тут тоже сложность: чтобы назначить задание требуются админские привилегии.
Ещё вариант: AdmiLink. Если каталог установки один и установочным пакетам перед установкой задавать какое-нибудь одно, стандартное имя, то AdmiLink можно настроить соответствующим образом.
Автор: Lars55
Дата сообщения: 17.02.2012 09:49
Trolzen
Обходные пути совершенно не при чем, просто ваша задача похожа на решение административной проблемы техническими методами.
Или все-таки есть смысл размазывать пакеты по всему винту?
В таком случае при любом решении придется что-то крутить: либо батник править под каждый файл, либо каждый файл под батник.
Автор: Trolzen
Дата сообщения: 17.02.2012 09:56
BVV63

Цитата:
Цитата: Однако ж это для каждого установочного пакета батник писать придётся.

Зачем?

Предлагаемые две строчки надо ведь в батник писать? Значит, папка сменится на ту, где батник лежит. Получается, если пакеты лежат в разных папках, то это уже несколько батников (даже если и одинаковые копии). А если всё в одной папке, то батников тоже несколько, по количеству пакетов.
Автор: BVV63
Дата сообщения: 17.02.2012 10:14
Trolzen
Если смену каталога осуществляет RunAs при запуске, то предлагаемый код не поможет, так что это обсуждать уже не актуально.
Автор: othered
Дата сообщения: 16.03.2013 13:11
Если вопрос еще актуален, то есть один удобный способ:
Нужен FAR, запускаем его от имени администратора, а в нем уже нужный msi установщик
Автор: Trolzen
Дата сообщения: 16.03.2013 18:05
Да, вопрос ещё актуален.

Такой способ уже описан во втором сообщении и он неудобен.
Автор: Lars55
Дата сообщения: 18.03.2013 03:02
Trolzen

Цитата:
Да, вопрос ещё актуален.

Так и не нашли решения за год

Я тут как раз недавно видел один способ:

Код: Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Msi.Package\Shell\runas]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Msi.Package\shell\runas\Command]
@=hex(2):22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,\
73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,22,00,20,00,2f,\
00,69,00,20,00,22,00,25,00,31,00,22,00,20,00,25,00,2a,00,00,00

Страницы: 1

Предыдущая тема: Windows 7 виснет намертво при загрузке на ноутбуке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.