как кодировать bat-файл, чтобы он всегда работал в режиме администратора?

<p>у меня есть эта строка внутри моего bat-файла:</p><pre><code>"example1server.exe" </code></pre><p>я хотел бы выполнить это в режиме администратора. как изменить код летучей мыши, чтобы запустить это как администратор?</p><p>это правильно? нужно ли ставить цитаты?</p><pre><code>runas /user:administrator invis.vbs example1server.exe </code></pre>

<p>вы используете <code>runas</code> для запуска программы от имени определенного пользователя:</p><pre><code>runas /user:administrator example1server.exe </code></pre>

<p>другой ответ требует ввода пароля учетной записи администратора. кроме того, запуск под учетной записью в группе администраторов отличается от <em>запуск от имени администратора</em>, см .: <a href="http://en.wikipedia.org/wiki/user\_account\_control#requesting\_elevation">uac в википедии</a> </p><p><em>инструкции по windows 7</em></p><p>для запуска от имени администратора создайте ярлык для командного файла.</p><ol> <li>щелкните правой кнопкой пакетный файл и нажмите кнопку «копировать». </li> <li>перейдите туда, где вы хотите ярлык </li> <li>щелкните правой кнопкой мыши на фоне каталога</li> <li>выберите вставить ярлык</li> </ol><p>затем вы можете установить ярлык для запуска от имени администратора:</p><ol> <li>щелкните правой кнопкой мыши по ярлыку</li> <li>выберите свойства</li> <li>на вкладке «ярлык» нажмите «дополнительно»</li> <li>установите флажок «запуск от имени администратора»</li> <li>нажмите ок, ок</li> </ol><p>теперь, когда вы дважды щелкнете по ярлыку, он запросит подтверждение uac, а затем <em>запуск от имени администратора</em> (что, как я уже говорил выше, отличается от запуска под учетной записью в группе администраторов).</p><p><strong>проверьте скриншот ниже</strong></p><p><img src="https://i.stack.imgur.com/zfldw.png" alt="screenshot"></p><p><strong>примечание:</strong> когда вы делаете это для запуска от имени администратора, текущий каталог (путь) не будет совпадать с файлом bat. это может вызвать некоторые проблемы во многих случаях, когда файл bat ссылается на относительные файлы рядом с ним. например, в моем windows 7 cur директория будет system32 вместо местоположения файла bat! <a href="https://stackoverflow.com/a/672721/2803565">чтобы обойти это</a> , вы должны использовать </p><p><code>cd "%~dp0"</code> </p><p>или лучше </p><p><code>pushd "%~dp0"</code> </p><p>чтобы убедиться, что cur dir находится по тому же пути, что и файл bat.</p>

<p>если вы можете использовать стороннюю утилиту, <a href="http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/">вот утилита командной строки <code>elevate</code></a> .</p><p>это описание использования:</p><pre><code>usage: elevate [-?|-wait|-k] prog [args] -? - shows this help -wait - waits until prog terminates -k - starts the the %comspec% environment variable value and executes prog in it (cmd.exe, 4nt.exe, etc.) prog - the program to execute args - optional command line arguments to prog </code></pre>

<p>вы можете использовать команду <a href="http://www.nirsoft.net/utils/nircmd.html">nircmd.exe</a> 's <a href="http://nircmd.nirsoft.net/elevate.html">elevate</a> </p><p>справочник по командам <strong>nircmd - elevate</strong></p><pre><code>elevate [program] {command-line parameters} </code></pre><p><em>только для windows vista/7/2008: запустите программу с правами администратора. если [программа] содержит один или несколько пробелов, вы должны поместить ее в кавычки.</em> </p><p>примеры: </p><pre><code>elevate notepad.exe elevate notepad.exe c:\windows\system32\drivers\etc\hosts elevate "c:\program files\my software\abc.exe" </code></pre><p>ps: я использую его на win 10, и он работает</p>

<p>я думаю, что у меня есть решение проблемы с паролем .... этот единственный аргумент действительно удивителен. он запрашивает пароль один раз, а затем никогда не запрашивает его снова. даже если вы поместите его в другую программу, он не будет запрашивать пароль. вот:</p><p><code>runas /user:administrator /savecred example1server.exe</code></p>

<p>конвертировать ваш пакетный файл в .exe с помощью этого инструмента: <a href="http://www.battoexeconverter.com/">http://www.battoexeconverter.com/</a> затем вы можете запустить его как администратор</p>

<pre><code>go get github.com/mattn/sudo </code></pre><p>затем</p><pre><code>sudo example1server.exe </code></pre>

<p>просто добавьте это в начало вашего файла bat:</p><pre><code>set "params=%*" cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo set uac = createobject^("shell.application"^) : uac.shellexecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /b ) </code></pre><p>это повысит до администратора, а также останется в правильном каталоге. проверено на windows 10.</p>

<p>должно определенно работать, добавляя эти строки вверху вашего файла bat. это буквально спасает жизнь!</p><pre><code>set "params=%*" cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo set uac = createobject^("shell.application"^) : uac.shellexecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /b ) </code></pre>

<p>используйте полный физический диск\путь к целевому пакетному файлу в свойствах ярлыка.</p><p>это не работает в windows 10, если вы используете дополнительные диски, как я пытался сделать сначала ...</p>