<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Plinio Pavin &#187; Delphi</title>
	<atom:link href="http://www.pliniopavin.com.br/wp/category/programacao/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pliniopavin.com.br/wp</link>
	<description>&#34;Porque o conhecimento é a única coisa que aumenta quando dividimos.&#34;</description>
	<lastBuildDate>Mon, 04 Oct 2010 00:32:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>O usuário atual é o administrador ?</title>
		<link>http://www.pliniopavin.com.br/wp/2007/09/o-usuario-atual-e-o-administrador/</link>
		<comments>http://www.pliniopavin.com.br/wp/2007/09/o-usuario-atual-e-o-administrador/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 14:05:00 +0000</pubDate>
		<dc:creator>Plinio</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://www.pliniopavin.com.br/blog/2007/09/20/o-usuario-atual-e-o-administrador/</guid>
		<description><![CDATA[TweetNavegando pela internet, encontrei a função abaixo, e achei interessante. Se você precisar verificar, de dentro do seu aplicativo Delphi, se o usuário corrente é o administrador do computador, ou membro do grupo administradores, use a função &#8220;IsWindowsAdmin&#8221;. unit WindowsUser; interface uses Windows; //retorna True se o usuário atual tem privilégios administrativos function IsWindowsAdmin: Boolean; [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton12" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.pliniopavin.com.br%2Fwp%2F2007%2F09%2Fo-usuario-atual-e-o-administrador%2F&amp;text=O%20usu%C3%A1rio%20atual%20%C3%A9%20o%20administrador%20%3F&amp;related=&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fwww.pliniopavin.com.br%2Fwp%2F2007%2F09%2Fo-usuario-atual-e-o-administrador%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.pliniopavin.com.br/wp/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Navegando pela internet, encontrei a função abaixo, e achei interessante.</p>
<p>Se você precisar verificar, de dentro do seu aplicativo Delphi, se o usuário corrente é o administrador do computador, ou membro do grupo administradores,  use a função &#8220;IsWindowsAdmin&#8221;.</p>
<p>unit WindowsUser;</p>
<p>interface<br />
uses Windows;</p>
<p>//retorna True se o usuário atual tem privilégios administrativos<br />
function IsWindowsAdmin: Boolean;</p>
<p>implementation</p>
<p>const<br />
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)) ;</p>
<p>const<br />
SECURITY_BUILTIN_DOMAIN_RID = $00000020;<br />
DOMAIN_ALIAS_RID_ADMINS = $00000220;</p>
<p>function IsWindowsAdmin: Boolean;<br />
var<br />
hAccessToken: THandle;<br />
ptgGroups: PTokenGroups;<br />
dwInfoBufferSize: DWORD;<br />
psidAdministrators: PSID;<br />
g: Integer;<br />
bSuccess: BOOL;<br />
begin<br />
Result := False;</p>
<p>bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken) ;<br />
if not bSuccess then<br />
begin<br />
if GetLastError = ERROR_NO_TOKEN then<br />
bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken) ;<br />
end;</p>
<p>if bSuccess then<br />
begin<br />
GetMem(ptgGroups, 1024) ;</p>
<p>bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize) ;</p>
<p>CloseHandle(hAccessToken) ;</p>
<p>if bSuccess then<br />
begin<br />
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators) ;</p>
<p>for g := 0 to ptgGroups.GroupCount &#8211; 1 do<br />
if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) then<br />
begin<br />
Result := True;<br />
Break;<br />
end;</p>
<p>FreeSid(psidAdministrators) ;<br />
end;</p>
<p>FreeMem(ptgGroups) ;<br />
end;<br />
end;</p>
<p>end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pliniopavin.com.br/wp/2007/09/o-usuario-atual-e-o-administrador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

