Запуск программы с правами администратора пользователем не из группы администраторов

Очень часто случается так, что на рабочей станции пользователь без привилегий должен запускать какую-либо программу которая работает только с правами администратора. Самый простой пример, так называемые секретные flash-накопители. И вот сисадмину надо идти и вводить пароль локального админа, или свой доменный пароль для запуска такой кривизны. Понятно, что все определяется возможностями системы и прямотой рук программиста написавшего программу, но факт остается фактом, случаи такие есть и они достаточно распространены.

Windows для решения такой проблемы предлагает нам пользоваться штатной программой run as, в самом простом виде имеющей синтаксис следующего вида RUNAS  /user:<Name of Computer>\<Username> program (for example cmd). Пароль можно передать с помощью конвейера echo <password>| , или с помощью ключа /savecred.  Но у этого решения есть существенный недостаток, пароль передается в открытом виде, что недопустимо.

Конечно, можно написать скрипт с помощью VBS и зашифровать его. Но мы не будем заниматься этим, а воспользуемся сторонними решениями, так называемыми 3-rd party программами. Я нашел две таких программы: это CPAU (http://www.joeware.net/freetools/tools/cpau/) и RunasSpc (http://www.robotronic.de/runasspcEn.html). Эти программы позволяют шифровать строку запуска, и затем уже запускать зашифрованный файл.

Примеры:

CPAU:

cpau -u localhost\admin -p PaSsWOrD -ex «C:\Windows\notepad.exe» -enc -file ExNonAdmin.job -lwp (создаем зашифрованный файл запуска)
cpau -dec -file ExNonAdmin.job -lwp (запускаем созданный выше файл)

RunasSpc:

runasspc /cryptfile:»ExNonAdmin.spc» /program:»C:\Windows\notepad.exe» /domain:»localhost» /user:»admin» /password:»PaSsWOrD» (создаем зашифрованный файл запуска)
runasspc /cryptfile:»ExNonAdmin.spc» /quiet (запускаем созданный выше файл)

К сожалению, у обеих программ нашлись недостатки: CPAU имеет проблемы в безопасности, дело в том, что если подложить ей любой запускной файл, имеющий то же имя, что и наш исходный файл, например, вместо notepad.exe мы подсунем virus.exe переименованный в notepad.exe, то мы сможем запустить вирус с правами администратора. Конечно, чтобы такое сделать пользователь должен знать какой exe’шник мы запускаем. То есть, в принципе, ушлого пользователя мы тоже сможем запутать при желании, но придется поколдовать с обманками. RunasSpc таким недостатком не обладает, и она just it work, поскольку сертификат вероятно учитывает размер файла, или какие-то контрольные суммы. И все бы ничего, но программа Free for only Private Use, что лицензионно чистые предприятия ставит перед фактом покупки лицензии.

Что удобнее, решайте сами. Надеюсь, что кому-то оказалось полезно узнать о таких решениях. Если у вас есть свои способы озвученной в заголовке проблемы, то пишите, мне до сих пор актуально и интересно.