Что нового

Запуск утилиты devcon с правами администратора

Perehvat

Новичок
Сообщения
3
Репутация
0
Здравствуйте. Помогите, пожалуйста. Нужно трижды запустить утилиту devcon с правами администратора под учетной записью пользователя с включенным UAC. Можно конечно через /savecred с помощью батника, но такой метод как и сохранение пароля в теле скрипта, например, powershell не подходят. Поправил скрипт из справки по команде RunAs и получилось следующее:
Код:
$iPID = RunAs($sUserName, @ComputerName, $sPassword, 0, "D:\distr\devcon\devconx64.exe enable "@USB\VID_24DC&PID_0101\7&9FB0977&0&4"", "D:\distr\devcon")

При компиляции после enable "@USB пишет ERROR Unable to pars line
Если же сделать вот так
Код:
RunAs($sUserName,@ComputerName,$sPassword,0,@ComSpec & ' /c Start "devconx64.exe disable "@USB\VID_24DC&PID_0101\7&9FB0977&0&4"" "',$ScriptDir)

То запускается коммандная строка с рабочим каталогом D:\distr\devcon, а в шапке окна коммандной строки написано devconx64.exe disable "@USB\VID_24DC, т.е. обрывается на знаке &

Как правильно сделать?
 

Cytrus

Новичок
Сообщения
110
Репутация
3
Попробуйте так.
Код:
$iPID = RunAs($sUserName, @ComputerName, $sPassword, 0, 'D:\distr\devcon\devconx64.exe enable "@USB\VID_24DC&PID_0101\7&9FB0977&0&4"', "D:\distr\devcon")
 
Автор
P

Perehvat

Новичок
Сообщения
3
Репутация
0
Cytrus, спасибо большое, скрипт отработал без явных ошибок. Но пришлось ещё включить учетную запись Администратор, чтобы RunAs отработала как надо при включенном UAC в Windows 7.
 

Cytrus

Новичок
Сообщения
110
Репутация
3
В заголовок скрипта надо вставлять директиву:
Код:
#RequireAdmin


Плюс нужно, чтобы обязательно были запущенны службы "Вторичный вход в систему" или "Запуск от имени другого пользователя".
И пробовать разные сочетания флагов в четвёртом параметре.
 
Автор
P

Perehvat

Новичок
Сообщения
3
Репутация
0
Спасибо, я попробую. В общем и так заработало. Единственная проблема еще осталась, вчера на моих глазах у одного из устройств поменялся InstanceId, был "USB\VID_24DC&PID_0101\7&9FB0977&0&2", потом devcon написал, что требуется перезагрузка и после перезагрузки цифра в конце поменялась на 4. С этим тоже придется побороться.
 
Последнее редактирование:

Cytrus

Новичок
Сообщения
110
Репутация
3
Я думаю, что старое устройство, то которое устаналивалось в предыдущие разы, или которые были проблемные,
полностью не были окончательно удаленны из системы.
А в одной системе не может быть двух устройств с одиннаковым идентификатором.
Поэтому devcon и инкрементирует (увеличивает на единицу) идентификатор для нового устройства.
Остатки устройств надо искать в системном реестре:
Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

Ясно, что там надо чётко знать, что и где редактировать.
А то по ошибке систему можно окончательно похоронить.
И чтобы любые изменения, связанные с устройствами вступили в силу, требуется перезагрузка.
 
Верх