[ОТВЕТИТЬ]
04.10.2013 09:27
KirillHome
 
Как и многие - столкнулся с необходимостью запустить на Win'7 старый софт, который "хочет" администраторские права.

В данном случае - это клиент для видеонаблюдения.
Ни разу не сталкивался с такой задачей, поэтому решил попробовать самое простое - runas.

При запуске - получаю ошибку:
Цитата:
740: Запрошенная операция требует повышения прав
Поискав - на англоязычных сайтах нашёл подсказку
Надо запускать не так
Код:
runas /user:ИмяПользователя ИмяПрограммы.EXE
а так
Код:
RunAs /user:ИмяПользователя "CMD /C start /B Путь_И_ИмяПрограммы.EXE"
04.10.2013 09:32
Occul
 
Может быть проблема на самом деле в том, что 16-битные приложения теперь только через cmd работают?
04.10.2013 09:57
KirillHome
 
Цитата:
Dr. Hyde Может быть проблема на самом деле в том, что 16-битные приложения теперь только через cmd работают?
На сколько я понял, в данном случае приложение - не 16-ти разрядное.
Хотя...
А как понять - приложение 16-ти разрядное или 32?
В MS, конечно, есть статья, но в Win'7 это, похоже, не поможет.
04.10.2013 10:04
Occul
 
А Win7 не 64-битная?
04.10.2013 10:07
KirillHome
 
На ноутбуке, с которого пишу - да, x64.
На том компьютере, на который, собственно, и надо поставить клиента - x32.
04.10.2013 10:11
Occul
 
Подумалось просто, что проблема с запуском уже х32-приложения. Есть еще предположение, что у cmd изначально прибиты какие-то свойства совместимости, которые по наследству передаются приложению. Т.е. если приложению прикрутить режим совместимости, то оно тоже будет запускаться.
04.10.2013 11:55
whitewizard
 
а если cmd.exe в свойства поставить, что он будет запускаться от администратора?
04.10.2013 12:42
KirillHome
 
Цитата:
whitewizard а если cmd.exe в свойства поставить, что он будет запускаться от администратора?
А зачем? (действительно не понимаю)

Была задача - запустить <<под доменным пользователем>> (не давая ему прав администратора) возможность просмотра системы видеонаблюдения.
Я пошёл решать её "в лоб" - через runas.
Выдало ошибку.
Нашёл способ эту ошибку обойти и решить поставленную задачу.
О способе решения - поделился.

Я знаю, что runas - не самое лучшее решение, дальше буду биться с Microsoft Application Compatibility Toolkit
04.10.2013 16:18
student
 
Цитата:
KirillHome Я знаю, что runas - не самое лучшее решение, дальше буду биться с Microsoft Application Compatibility Toolkit
посмотри
Запустить батник от имени админа, без него.
там есть ссылка на решение с PowerShell
вдруг поможет :)
04.10.2013 17:21
KirillHome
 
Цитата:
student посмотри
Запустить батник от имени админа, без него.
там есть ссылка на решение с PowerShell
вдруг поможет :)
На сколько я понял, в описываем решении - задача была
Цитата:
запустить скрипт из командной строки от имени администратора. Мне нужен был эквивалент right-click > «Run as administrator»:
У меня у приложения есть этот пункт в меню, мне нужно, что бы пользователь "не получил" администраторский доступ и, при этом, мог бы запустить приложение.
"Не получил" - для runas, ясное дело, в кавычках. После того, как администраторский пароль будет сохранён - можно будет всё запускать через runas - и система будет думать, что это происходит от администратора. Единственное, что чуть-чуть успокаивает - то что пользователь, скорее всего, так не поступит.
25.12.2013 03:53
gluko
 
Вместо
RunAs /user:ИмяПользователя "CMD /C start /B Путь_И_ИмяПрограммы.EXE"

Можно использовать
RunAs /user:ИмяПользователя "CMD /C start /B Путь_И_ИмяПрограммы.LNK"


Т.к. в первом случае не получается передать длинный путь с пробелами даже если воспользоваться экранированными ковычками:
RunAs /user:ИмяПользователя "CMD /C start /B \"Путь_И_ИмяПрограммы.EXE\""
25.12.2013 08:12
OlegON
 
Думается, что просто надо дважды экранировать, в первый раз для runas, второй - для start.
25.12.2013 11:43
KirillHome
 
А можно просто дать нужную информацию в формате 8.3

Код:
RunAs /user:ИмяДомена\ИмяПользователя "CMD /C start /B C:\Progra~1\Acecop~1\CMS.EXE"
Полный путь выглядит так:
Код:
C:\Program Files\AceCop CMS\CMS.EXE
25.12.2013 14:25
KirillHome
 
Цитата:
gluko Вместо
Код:
RunAs /user:ИмяПользователя "CMD /C start /B Путь_И_ИмяПрограммы.EXE"
Можно использовать
Код:
RunAs /user:ИмяПользователя "CMD /C start /B Путь_И_ИмяПрограммы.LNK"
Т.к. в первом случае не получается передать длинный путь с пробелами даже если воспользоваться экранированными ковычками:
Код:
RunAs /user:ИмяПользователя "CMD /C start /B \"Путь_И_ИмяПрограммы.EXE\""
При использовании start - в первых кавычках задаётся заголовок окна!
Поэтому правильное использование - будет такое:
Код:
RunAs /user:ИмяДомена\ИмяПользователя "CMD /C start \"\" /B \"Путь_И_ИмяПрограммы.EXE\""
Всё вышесказанное (формат 8.3, заголовок) - не отрицает возможность вызова ярлыков :)
Опции темы


Часовой пояс GMT +3, время: 22:51.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.