Командният ред се изпълнява потребител:‹admin-user› ‹command› не се изпълнява правилно

Бих искал да мога да извикам netsh от моята C++ програма. Опитвам се да използвам system(), за да постигна това. Не знам за никакви опции за system(), които биха дали администраторски привилегии на получения команден ред, така че се опитвах да използвам командата runas. Тествах командата в основен команден ред:

runas /user:<admin-user> "netsh int ip set address \"Local Area Connection\" static <IP address>"

Въпреки че самата команда netsh работи перфектно в командния ред, който е стартиран като администратор, версията runas на командата не изглежда да работи от нормален команден ред. Някакви предположения?


person Chris Horn    schedule 04.02.2015    source източник


Отговори (1)


Добре дошли в света на административните скриптове на Windows! Когато използвате runas, вие само питате windows да промени потребителя, но не можете да питате за повишени привилегии.

Единственият начин, който някога съм намирал за това, е да използвам къса връзка. Под файловия мениджър създавате кратка връзка към .bat или по-добре .cmd файл. След това отивате в свойствата на късата връзка, раздел shortlink, трябва да има бутон Advanced, където можете да проверите Run as administrator.

След това можете да стартирате всичко това от командния ред или дори от друг пакетен файл с:

link_name.lnk

Внимавайте, истинското име може да не е това, което написах по-горе: имам само френска система, в която ключовите думи са Propriétés, Raccourci, Avancé ... и Exécuter en tant qu'administrateur.

person Serge Ballesta    schedule 04.02.2015