<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: WMI & UAC (определение прав)]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5892</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5892&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: WMI & UAC (определение прав)».]]></description>
		<lastBuildDate>Tue, 28 Jun 2011 19:25:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49500#p49500</link>
			<description><![CDATA[<p>Одним из простых вариантов проверки на наличие повышенных прав&nbsp; является попытка создать текстовый файл в корне системного раздела.</p><div class="codebox"><pre><code>function isElevated()
{
  var e, f=GetSystemDrive()+RandomFileName();
  try{ CreateTextFile(f); FSO.DeleteFile(f);}
  catch (e) {return false;}
  return true;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Tue, 28 Jun 2011 19:25:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49500#p49500</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49083#p49083</link>
			<description><![CDATA[<p>Я для себя&nbsp; делал через whoami без всплывающих окон</p><div class="codebox"><pre><code>
Function CheckPerms4(perms)
	on error resume next
	CheckPerms4=true
	Const admin=&quot;S-1-5-32-544&quot;
	Const elevated=&quot;S-1-16-12288&quot;
	Set fso = CreateObject(&quot;Scripting.Filesystemobject&quot;)
	Set WshShell = CreateObject(&quot;Wscript.Shell&quot;)
	Set RExp = CreateObject(&quot;VBScript.RegExp&quot;)
	temp_file=fso.GetSpecialFolder(0)&amp;&quot;\&quot;&amp;fso.GetTempName
	ret=WshShell.Run(&quot;cmd /c whoami /groups &gt;&quot;&quot;&quot;&amp;temp_file&amp;&quot;&quot;&quot;&quot;,0,true)
	RExp.Global=True
	Select Case UCase(perms)
	Case &quot;ADMIN&quot;
		RExp.Pattern=admin
	Case &quot;ELEVATED&quot;
		RExp.Pattern=elevated
	End Select
	CheckPerms4=RExp.Test(fso.OpenTextFile(temp_file).ReadAll)
	fso.DeleteFile temp_file
	Set fso = Nothing
	Set WshShell = Nothing
	Set RExp = Nothing
	on error goto 0
End Function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alexey)]]></author>
			<pubDate>Sat, 11 Jun 2011 05:27:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49083#p49083</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49076#p49076</link>
			<description><![CDATA[<p><strong>Dmitrii</strong><br /></p><div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p>Коль скоро механизм реализации Вам безразличен, то, возможно, имеет смысл задействовать (для решения исходной задачи) WinAPI.</p></blockquote></div><p>Нет нет, я рассматриваю только скриптовые варианты. API вызвать проблем нет и код я написать могу и с сишного кода в VB-ный конвертнуть могу, но просто не эстетично как то. ) Решил остановиться на проверке версии ОС и под Windows 7 и Vista просто проверять значение в реестре. Думаю этого вполне будет достаточно. ) </p><p><strong>Dmitrii</strong>, <strong>Rom5</strong> Благодарю за информацию. )</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 20:07:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49076#p49076</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49075#p49075</link>
			<description><![CDATA[<p><a href="http://www.itwriting.com/blog/198-c-code-to-detect-uac-elevation-on-vista.html">http://www.itwriting.com/blog/198-c-cod … vista.html</a> C# code to detect UAC elevation on Vista</p><p>Нагуглил пример на C#, мол, определяющего наличие повышения прав процесса. Может пригодится...</p>]]></description>
			<author><![CDATA[null@example.com (Rom5)]]></author>
			<pubDate>Fri, 10 Jun 2011 19:19:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49075#p49075</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49072#p49072</link>
			<description><![CDATA[<p>Порывшись в MSDN нашёл следующее:<br /></p><div class="quotebox"><blockquote><p>Scripts <strong><span style="color: red">cannot determine programmatically</span> whether they are running under a standard user security token or an Administrator token</strong>. The script may fail with an access denied error. <strong>If the <span style="color: green">script</span> requires administrator privileges, then it <span style="color: green">must be run in the elevated mode</span></strong>.</p></blockquote></div><p>Иными словами, надо решать не задачу определения уровня привилегий, а задачу запуска процесса с заведомого достаточными привилегиями.<br />Впрочем, здесь речь о сценариях. Коль скоро механизм реализации Вам безразличен, то, возможно, имеет смысл задействовать (для решения исходной задачи) WinAPI.</p>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Fri, 10 Jun 2011 18:38:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49072#p49072</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49065#p49065</link>
			<description><![CDATA[<p><strong>Dmitrii</strong>, на самом деле для меня не столь важно каким способом, лишь бы не было посторонник моргающих окон. А уж WMI или не WMI особой роли не играет. В том примере о котором я говорил - <a href="http://csi-windows.com/toolkit/ifuserperms">http://csi-windows.com/toolkit/ifuserperms</a> появляется чёрное окно, т.к запускается консоль и выполняется программа <strong>whomai</strong>. Пробывал с невидимой консолью это делать. Неудобно.</p><p>Подумываю о том, чтобы в том же примере сделать Run с параметром скрытия приложения, вместо Exec, а из команды возвращать errorlevel. Или как то так. Но пока не особо получается.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 13:55:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49065#p49065</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49064#p49064</link>
			<description><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>... Именно !..</p></blockquote></div><p>С этим проблемы имеются (речь, разумеется, о WMI-реализации)?</p>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Fri, 10 Jun 2011 13:47:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49064#p49064</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49063#p49063</link>
			<description><![CDATA[<p><strong>2 Dmitrii:</strong><br /></p><div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p><strong>Xameleon</strong>, только с помощью WMI Вы, скорее всего, не сможете решить указанную задачу.</p></blockquote></div><p>А жаль..</p><div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p>Кстати, думается, что надо интересоваться уровнем привилегий не текущего пользователя системы, а пользователя, от имени которого запущен процесс установки приложения.</p></blockquote></div><p>Именно ! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Я думал попробывать какими нибудь косвенными способами определить включеный UAC, но пока найденые варианты не устраивают.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 13:32:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49063#p49063</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49062#p49062</link>
			<description><![CDATA[<p><strong>Xameleon</strong>, только с помощью WMI Вы, скорее всего, не сможете решить указанную задачу.<br />Кстати, думается, что надо интересоваться уровнем привилегий не текущего пользователя системы, а пользователя, от имени которого запущен процесс установки приложения.</p><p><strong>Felix Faria</strong>, вариант с использованием класса <span style="color: blue">Win32_NetworkLoginProfile</span> никак не подходит. Например, моя &quot;учётка&quot; входит в группу локальных администраторов, но уровень привилегий идентифицируется как пользовательский.</p>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Fri, 10 Jun 2011 13:11:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49062#p49062</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49061#p49061</link>
			<description><![CDATA[<p><strong>2 Felix Faria</strong> Вы не понимаете о чём я спрашиваю ? Я говорю об определении необходимости повышения прав запуска - UAC Elevation. Вы же упорно скидываете примеры и ссылки на определение пренадлежности пользователя разным группам ? Вы с Windows 7 знакомы ? Пользователь может быть администратором на компьютере, но при включенном UAC получать запрос на разрешение внесения изменений в компьютере при запуске приложения.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 13:03:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49061#p49061</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49060#p49060</link>
			<description><![CDATA[<p><strong>2 Xameleon:</strong> Всё-таки есть решение через WMI. Надеюсь, это то, что вам нужно:<br /></p><div class="codebox"><pre><code>Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2&quot;)
For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_NetworkLoginProfile&quot;)
	If (objOS.UserType=&quot;Normal Account&quot;) Then
		If (objOS.Privileges=2) Then
			WScript.Echo objOS.Caption&amp;&quot; is Administrator&quot;
		ElseIf (objOS.Privileges=1) Then 
			WScript.Echo objOS.Caption&amp;&quot; is User&quot;
		Else 
			WScript.Echo objOS.Caption&amp;&quot; is Guest&quot;
		End If 
	End If 
Next</code></pre></div><p>Справка <a href="http://msdn.microsoft.com/en-us/library/aa394221(v=vs.85).aspx">здесь</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Felix Faria)]]></author>
			<pubDate>Fri, 10 Jun 2011 11:10:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49060#p49060</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49059#p49059</link>
			<description><![CDATA[<p><strong>2 Felix Faria:</strong> Обе ссылки бесполезны. К UAC не имеют отношения. <br />1) На моей русскоязычной системе не выполняется скрипт, т.к у меня нет группы Administrators, а есть Администраторы. Но даже исправление не даёт определить - включен UAC или нет, а только лишь определить - входит ли user в группу администраторов или нет.<br />2) Вторая ссылка даёт информацию только о пренадлежности пользователя к группам. </p><p>Всё это я так же уже видел... И к сожалению ни чем это не помогло. Пробывал читать через реестр, но этот способ плох тем, что не чётко идентифицирует состояние UAC, т.к значение может быть заблокировано от чтения, либо изменено вручную, а перезагрузка системы не произведена.<br /></p><div class="codebox"><pre><code>
Function GetUACState()
    On Error Resume Next
    GetUACState = 0
    GetUACState = WshShell.RegRead(&quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA&quot;)
End Function</code></pre></div><p><strong>2 abasov:</strong> Вообще не понял смысл этих действий. <img src="//forum.script-coding.com/img/smilies/neutral.png" width="15" height="15" /> Что это даёт ?</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 10:56:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49059#p49059</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49057#p49057</link>
			<description><![CDATA[<p>Я так проверяю:</p><div class="codebox"><pre><code>regread(&quot;HKEY_USERS\S-1-5-19\Environment\TEMP&quot;)
If InStr(val,&quot;Temp&quot;) Then
&#039;...есть
Else 
&#039;...нет
End If</code></pre></div><p>батником:<br /></p><div class="codebox"><pre><code>@echo off
setlocal enableextensions enabledelayedexpansion

call :IsAdminTest IsAdmin

echo IsAdmin=%IsAdmin%

endlocal
exit /b 0

:IsAdminTest
    setlocal enableextensions enabledelayedexpansion
    
    &quot;%systemroot%\system32\reg.exe&quot; query &quot;HKU\S-1-5-19&quot; 1&gt;nul 2&gt;nul &amp;&amp; set IsAdmin=1 || set IsAdmin=0
    
    endlocal &amp; set /a %~1=%IsAdmin%
    exit /b 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (abasov)]]></author>
			<pubDate>Fri, 10 Jun 2011 10:21:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49057#p49057</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49055#p49055</link>
			<description><![CDATA[<p>Ещё вот нашёл, сам думал нечто подобное использовать. Вдруг сойдет:<br /><a href="http://stackoverflow.com/questions/301860/best-way-to-know-if-a-user-has-administrative-privileges-from-a-vbscript">http://stackoverflow.com/questions/3018 … a-vbscript</a></p><p>Из WMI про учётную запись нашёл только это: <a href="http://msdn.microsoft.com/en-us/library/aa394507(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library … s.85).aspx</a>, хотя я не разобрался, есть ли тут в свойствах параметр, показывающий наличие соответствующих прав.</p>]]></description>
			<author><![CDATA[null@example.com (Felix Faria)]]></author>
			<pubDate>Fri, 10 Jun 2011 09:19:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49055#p49055</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: WMI & UAC (определение прав)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49054#p49054</link>
			<description><![CDATA[<p><strong>2 Felix Faria:</strong> Благодарю <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Я про неё знаю, но мне всё же хотелось бы сделать это через WMI или какой либо другой объект, без появления посторонних окон. Вариант со скрытой консолью тоже не подошёл.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 10 Jun 2011 09:17:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49054#p49054</guid>
		</item>
	</channel>
</rss>
