<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; HTA: "Run as Administrator"]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=11162</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11162&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «HTA: "Run as Administrator"».]]></description>
		<lastBuildDate>Sat, 13 Feb 2016 08:16:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101057#p101057</link>
			<description><![CDATA[<p>Пардон, у меня почему-то после пути ещё имя rundll32 подвязалось, в результате получал:<br /></p><div class="quotebox"><blockquote><p>Ошибка в rundll32.exe<br />Нет точки входа: shell32.dll,ShellExec_RunDLL</p></blockquote></div><p>А насчёт &quot;не писать полный путь&quot; при переноске в ТС решаемо тем же псевдонимом или созданной внутренней переменной. Т.ч. всё гуд. Спасибо за фичу с non-exe. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sat, 13 Feb 2016 08:16:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101057#p101057</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101056#p101056</link>
			<description><![CDATA[<p>Правильней было бы написать &quot;создаём в любом из каталогов, описанных в %PATH%&quot;. Делается это только зачем, чтобы каждый раз не писать путь к <span style="color: blue">sudo.lnk</span>. Т.е. <span style="color: blue">sudo.lnk</span>, весом в 1кБ, созданный собственными руками, ничем не хуже других прог данного предназначения.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sat, 13 Feb 2016 07:05:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101056#p101056</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101005#p101005</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>Кстати, работать с таким <span style="color: blue">sudo</span> гораздо удобнее чем со <span style="color: blue">*</span> Total Commander или с одноименной утилитой</p></blockquote></div><p>Ну, да. Пока дело не дошло до необходимости запуска программ с флешки. &gt;&gt;&gt;</p><div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>Создаем в каталоге windows ярлык</p></blockquote></div><p>Поэтому для меня не вариант.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 11 Feb 2016 00:10:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101005#p101005</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100173#p100173</link>
			<description><![CDATA[<p>Избавился от консольного окошка в моей самодельной <span style="color: blue">sudo</span> и исправил свой предыдущий пост.<br />Кстати, работать с таким <span style="color: blue">sudo</span> гораздо удобнее чем со <span style="color: blue">*</span> Total Commander или с одноименной утилитой, т.к. для запуска с их помощью скриптов необходимо <em>обязательное указание обработчика</em>. Моя же <span style="color: blue">sudo</span> сама находит ассоциированный с файлом обработчик <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Нашел <a href="http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights">достаточно много вариантов</a> определения повышенных прав. Выбрал вариант записи в реестр, как наиболее простой и надежный к тому же <em>не использующий результат работы консольных утилит</em>. Итого <span style="color: blue">test.hta</span> получился таким:</p><div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;hta:application
 id=&quot;App&quot;
 icon=&quot;UserAccountControlSettings.exe&quot;
 /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	function RunAs(){
		var Shell = new ActiveXObject(&quot;Shell.Application&quot;);
		Shell.ShellExecute (&#039;mshta&#039;, App.commandLine, &quot;&quot;, &quot;runas&quot;, 1);
		self.close();
	}
	function IsElevation(){
		var WshShell = new ActiveXObject(&quot;WScript.Shell&quot;);
		try {
			WshShell.RegWrite(&quot;HKLM\\elvt&quot;, &quot;&quot;);
			WshShell.RegDelete(&quot;HKLM\\elvt&quot;);
			return true;
		} catch(e) {}
	}
	function ShowUserPrivs(){
		var WshNetwork = new ActiveXObject(&quot;WScript.Network&quot;);
		App.document.title = &quot;Run as &quot; + WshNetwork.UserDomain + &quot;\\&quot; + WshNetwork.UserName + (IsElevation() ? &quot; (with Elevated Privilegs)&quot; : &quot; (User)&quot;);
	}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type=&quot;button&quot; value=&quot;Run as Administrator&quot; onclick=&quot;RunAs()&quot; /&gt;&lt;br /&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
	ShowUserPrivs();
	var oSWbemLocator = new ActiveXObject(&quot;WbemScripting.SWbemLocator&quot;);
	var oWMIService = oSWbemLocator.ConnectServer(&#039;.&#039;, &#039;ROOT\\CIMV2&#039;); 
	colItems = oWMIService.ExecQuery (&#039;SELECT * FROM Win32_Process&#039;);
	var enumItems = new Enumerator(colItems);
	document.write(&#039;&lt;table border=&quot;1&quot;&gt;&lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Owner&lt;th&gt;Command Line&#039;);
	for (; !enumItems.atEnd(); enumItems.moveNext()) {
		var oItem = enumItems.item();
		document.write(&#039;&lt;tr&gt;&lt;td&gt;&#039; + oItem.Name);
		document.write(&#039;&lt;td&gt;&amp;nbsp;&#039;);
		try {
			var oOwner = oItem.ExecMethod_(&quot;GetOwner&quot;, null);
			if (oOwner.User) document.write(oOwner.Domain + &#039;\\&#039; + oOwner.User);
		} catch(e) {}
		document.write(&#039;&lt;td&gt;&#039; + oItem.CommandLine);
	}
	document.write(&#039;&lt;/table&gt;&#039;);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Tue, 05 Jan 2016 11:23:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100173#p100173</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99991#p99991</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>про * в командной строке TC</p></blockquote></div><p>Командной строки как элемента окна это не касается. Хотя для неё можно создать любой псевдоним с *mshta.exe и %A в параметрах.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 28 Dec 2015 05:49:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99991#p99991</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99986#p99986</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />Решение с запуском, без использования сторонних программ, показалось интересным вот и поделился.<br />Так же интересной и познавательной считаю твою информацию про * в командной строке TC и про утилитку Sudo.<br />А вопрос в определении повышенных прав по прежнему актуален.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sun, 27 Dec 2015 19:07:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99986#p99986</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99977#p99977</link>
			<description><![CDATA[<p><strong>mozers</strong><br />Так вопрос стоял в определении наличия повышения.<br />Если достаточно самого повышения без мешающей консоли, то уже давно есть своя <a href="http://wincmd.ru/plugring/Sudo.html">Sudo</a>.<br />А в ТС так вообще достаточно * в начале поля <em>Команда:</em>.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 27 Dec 2015 12:31:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99977#p99977</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99970#p99970</link>
			<description><![CDATA[<p>Придумал решение, позволяющее <strong>запустить любую программу или скрипт с командной строки в режиме повышенных прав</strong>:<br />Создаем в каталоге windows ярлык с именем <span style="color: blue">sudo</span>. В качестве расположения указываем </p><div class="codebox"><pre><code>cmd /c start &quot;&quot;</code></pre></div><p> или так </p><div class="codebox"><pre><code>rundll32.exe shell32.dll,ShellExec_RunDLL</code></pre></div><p> В дополнительных свойствах ярлыка ставим галку на &quot;Запуск от имени администратора&quot;. Все <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Теперь любую прогу или скрипт можно запустить с повышенными правами командой <span style="color: blue">sudo c:\path\anyprog.vbs</span>.<br />Если команду <span style="color: blue">sudo</span> использовать из батника, то необходимо писать <span style="color: blue">sudo.lnk</span>. Указание пути не требуется. И кавычки при указании пути к запускаемой программе/скрипту не обязательны (наш <span style="color: blue">sudo</span> читает всю строку до конца).</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sun, 27 Dec 2015 11:52:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99970#p99970</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99830#p99830</link>
			<description><![CDATA[<p>Ищу хороший код надежного определения текущих прав.<br />Смотрю, а <a href="http://forum.script-coding.com/viewtopic.php?id=5892">тема то уже поднималась</a>. К сожалению, ни один из вариантов не выдерживает критики <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />Случайно набрёл на <a href="http://compfixer.info/run-as-administrator/">приятную статейку</a> про разницу между запуском под администратором и запуском &quot;Run as Administrator&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Mon, 21 Dec 2015 08:12:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99830#p99830</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99810#p99810</link>
			<description><![CDATA[<p>Не про Sysinternals Process Explorer - наврал. Он просто без повышенных прав пишет в строках &lt;access denied&gt;.<br />Ну если такие монстры как Марк Русинович отступили то и я не буду все свои скрипты наделять повышенными правами.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sun, 20 Dec 2015 18:20:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99810#p99810</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99809#p99809</link>
			<description><![CDATA[<p>2<strong>Rumata</strong><br />Обернул извлечение владельца в try-catch. Надеюсь это устранит ошибку.<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Что именно дописывать? Возможность запуска скриптов с повышенными правами?</p></blockquote></div><p>Да. Я именно про это. Просто раньше я был уверен что у пользователя с админскими правами все будет как надо. Теперь такой уверенности нет.<br />Думаю стоит в скрипты встраивать проверку на наличие повышенных прав и если они отсутствуют то сразу перезапускать скрипт с повышенными правами.<br />Во всяком случае я не понимаю почему Sysinternals Process Explorer сразу показывает детали процессов. Объяснение одно - он, когда я его запускаю без повышенных прав, сам себя перезапускает.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sun, 20 Dec 2015 18:09:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99809#p99809</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99801#p99801</link>
			<description><![CDATA[<p>На Win7 Enterprise SP1 ошибка при переходе в &quot;админский режим&quot;:<br /></p><div class="codebox"><pre><code>
Line: 24
Char: 3
Error: Not found
Code: 0
URL: file:///Z:/mozers.hta
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Sun, 20 Dec 2015 16:44:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99801#p99801</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99800#p99800</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>Ну что, уважаемые господа скриптописатели, может и вам пришла пора все свои скрипты дописывать?</p></blockquote></div><p>Что именно дописывать? Возможность запуска скриптов с повышенными правами? Так это забота не скриптов, а системы и решение пользователя, который их запускает.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Sun, 20 Dec 2015 16:37:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99800#p99800</guid>
		</item>
		<item>
			<title><![CDATA[HTA: "Run as Administrator"]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=99799#p99799</link>
			<description><![CDATA[<div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;hta:application id=&quot;App&quot; /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	function RunAs(){
		var Shell = new ActiveXObject(&quot;Shell.Application&quot;);
		Shell.ShellExecute (&#039;mshta&#039;, App.commandLine, &quot;&quot;, &quot;runas&quot;, 1);
		self.close();
	}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type=&quot;button&quot; value=&quot;Run as Administrator&quot; onclick=&quot;RunAs()&quot; /&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
	var oSWbemLocator = new ActiveXObject(&quot;WbemScripting.SWbemLocator&quot;);
	var oWMIService = oSWbemLocator.ConnectServer(&#039;.&#039;, &#039;ROOT\\CIMV2&#039;); 
	colItems = oWMIService.ExecQuery (&#039;SELECT * FROM Win32_Process&#039;);
	var enumItems = new Enumerator(colItems);
	document.write(&#039;&lt;table border=&quot;1&quot;&gt;&lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Owner&lt;th&gt;Command Line&#039;);
	for (; !enumItems.atEnd(); enumItems.moveNext()) {
		var oItem = enumItems.item();
		document.write(&#039;&lt;tr&gt;&lt;td&gt;&#039; + oItem.Name);
		document.write(&#039;&lt;td&gt;&amp;nbsp;&#039;);
		try {
			var oOwner = oItem.ExecMethod_(&quot;GetOwner&quot;, null);
			if (oOwner.User) document.write(oOwner.Domain + &#039;\\&#039; + oOwner.User);
		} catch(e) {}
		document.write(&#039;&lt;td&gt;&#039; + oItem.CommandLine);
	}
	document.write(&#039;&lt;/table&gt;&#039;);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div><p>Вот такой демонстрационный скрипт выводит список процессов (имя, владелец, ком.строка).<br />Кнопочка сверху &quot;Run as Administrator&quot; перезапускает приложение с повышением прав.<br />Хочу быть точным. <span style="color: #CC6666">Действие &quot;Run as Administrator&quot; не соответствует действительности</span>, как не соответствует действительности одноименный пункт контекстного меню Windows, поскольку при выборе данного действия, фактически происходит запуск приложения не под учеткой локального администратора, а под учетной записью текущего пользователя, но в режиме повышенных прав.<br />Результат этого действия в представленном скрипте виден налицо. Если со своей учеткой (пусть даже обладающей админскими правами) вы видели детали только ваших процессов, то после перезапуска с повышенными привилегиями вы можете видеть детали практически всех процессов в системе.<br />Мысль о добавлении функции &quot;Run as Administrator&quot; в свои скрипты пришла ко мне вместе с установкой Windows 10. Если в прежних операционках пользователь с правами администратора имел все положенные администратору права, то в Windows 10 (возможно и в Windows 8 - я с ней мало занимался) администратор фактически почти такой же бесправный юзер как и все остальные и лишь запуск &quot;Run as Administrator&quot; делегирует ему положенное.<br />Остался нерешенным лишь один вопрос:<br />Как из скрипта однозначно определить с какими правами он запущен (с обычными или повышенными)? (Не хочется тупо проверять есть или нет доступ к свойствам какого нибудь системного процесса и на этом строить вывод. Может есть какой то системный признак?).<br />Кстати, вот Total Commander, будучи запущен в режиме повышенных прав покаывает в заголовке имя пользователя со значком ^.<br />Cmd.exe тоже &quot;показывает&quot;, но вместо имени пользователя тупо пишет в заголовке &quot;Администратор&quot;.</p><p>Ну что, уважаемые господа скриптописатели, может и вам пришла пора все свои скрипты дописывать?</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sun, 20 Dec 2015 15:58:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=99799#p99799</guid>
		</item>
	</channel>
</rss>
