﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Проверка на админа</title>
  <id>~/topic/3241/proverka-na-admina/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-22T11:28:54Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3241" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/22962/</id>
    <title type="text">Наверное все знают, что в новых Windows тыкать палочкой одно приложение из другого можно только с пр...</title>
    <published>2012-12-14T19:33:56Z</published>
    <updated>2012-12-14T19:33:56Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Наверное все знают, что в новых Windows тыкать палочкой одно приложение из другого можно только с правами мегаадминистратора.
Чтобы снизить количество мата в окружающей среде, лучше изначально добавить в своего робота такой простой метод проверки&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt; 
private void CheckAdministrator()
	{
		var identity = WindowsIdentity.GetCurrent();
		if (identity == null) throw new InvalidOperationException(&amp;quot;Couldn't get the current user identity&amp;quot;);
		var principal = new WindowsPrincipal(identity);

		// Check if this user has the Administrator role. If they do, return immediately.
		// If UAC is on, and the process is not elevated, then this will actually return false.
		var isBuiltInAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);

		if (!isBuiltInAdmin)
		{
			var exMessage = &amp;quot;Робот запущен не под Администратором&amp;quot;;
			WriteLog(LogLevels.Error, exMessage);
			MessageBox.Show(
				exMessage, &amp;quot;Ошибка&amp;quot;,
				MessageBoxButton.OK, MessageBoxImage.Error);
			Shutdown();
		}
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;По последней строчке видно, что метод вызывается из App.xaml.cs,
который в свою очередь стоит сделать наследником ILogSource и добавить в источники логирования,
в том числе и для того, чтобы надёжно логировать все возможные исключения, но это уже другая песня.&lt;/p&gt;
&lt;p&gt;Англоязычные комментарии остались от &lt;a href="http://stackoverflow.com" rel="nofollow" target="_blank"&gt;http://stackoverflow.com&lt;/a&gt;, откуда собственно код и позаимствован. Там ещё была проверка на UAC, но он у вас выключен.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>