﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Win32Exception: Отказано в доступе</title>
  <id>~/topic/1006/win32exception-otkazano-v-dostupe/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-15T19:50:23Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1006" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/6044/</id>
    <title type="text">pyhta4og: Аналогичная проблема. При запуске SmartSample в debug-режиме под Visual Studio 2008 получа...</title>
    <published>2011-02-17T17:24:28Z</published>
    <updated>2011-02-17T17:24:28Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(6043)" rel="nofollow" target="_blank"&gt;pyhta4og&lt;/a&gt;:&lt;/strong&gt;
Аналогичная проблема.&lt;/p&gt;
&lt;p&gt;При запуске SmartSample в debug-режиме под Visual Studio 2008&lt;/p&gt;
&lt;p&gt;получаю Win32Exception &amp;quot;Access Denied&amp;quot;
at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.Kill()
at Ecng.Trading.Smart.SmartTrader.KillSmartComProcess()
at Ecng.Trading.Smart.SmartTrader.OnConnect()&lt;/p&gt;
&lt;p&gt;Если пускать .exe файл - ошибки нет.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Студия наверное не из под привилегированного аккаунта запускается. А следовательно и debug.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/6043/</id>
    <title type="text">Аналогичная проблема. При запуске SmartSample в debug-режиме под Visual Studio 2008 получаю Win32Exc...</title>
    <published>2011-02-17T17:15:37Z</published>
    <updated>2011-02-17T17:15:37Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.com/users/497/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Аналогичная проблема.&lt;/p&gt;
&lt;p&gt;При запуске SmartSample в debug-режиме под Visual Studio 2008&lt;/p&gt;
&lt;p&gt;получаю Win32Exception &amp;quot;Access Denied&amp;quot;
at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.Kill()
at Ecng.Trading.Smart.SmartTrader.KillSmartComProcess()
at Ecng.Trading.Smart.SmartTrader.OnConnect()&lt;/p&gt;
&lt;p&gt;Если пускать .exe файл - ошибки нет.&lt;/p&gt;
&lt;p&gt;Специально воспроизвел эту ошибку вызывая из тестового приложения OpenProcess для  notepad.exe и для smartcom2.exe
Для первого все нормально даже в дебаге, для второго - под дебагом в VS - ошибка.&lt;/p&gt;
&lt;p&gt;Порылся по форумам нашел решение (чтобы это ни значило, но работает).
Чтобы убивать любые процессы надо своему процессу поставить SeDebugPriviledge&lt;/p&gt;
&lt;p&gt;Для этого нашел классик - см код ниже.
Для использования в SmartSample.MainWindow.MainWindow вставить Win32Helpers.SeDebugPriviledge.Enable();&lt;/p&gt;
&lt;p&gt;Классик надо включить в проект примера.&lt;/p&gt;
&lt;p&gt;Возможно Михаил включит в S# раз у нескольких людей такая ошибка вылетает&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Win32Helpers
{
    using System.Runtime.InteropServices;

    public class SeDebugPriviledge
    {

        [DllImport(&amp;quot;advapi32.dll&amp;quot;, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool OpenProcessToken(IntPtr ProcessHandle,
            UInt32 DesiredAccess, out IntPtr TokenHandle);

        private static uint STANDARD_RIGHTS_REQUIRED = 0x000F0000;
        private static uint STANDARD_RIGHTS_READ = 0x00020000;
        private static uint TOKEN_ASSIGN_PRIMARY = 0x0001;
        private static uint TOKEN_DUPLICATE = 0x0002;
        private static uint TOKEN_IMPERSONATE = 0x0004;
        private static uint TOKEN_QUERY = 0x0008;
        private static uint TOKEN_QUERY_SOURCE = 0x0010;
        private static uint TOKEN_ADJUST_PRIVILEGES = 0x0020;
        private static uint TOKEN_ADJUST_GROUPS = 0x0040;
        private static uint TOKEN_ADJUST_DEFAULT = 0x0080;
        private static uint TOKEN_ADJUST_SESSIONID = 0x0100;
        private static uint TOKEN_READ = (STANDARD_RIGHTS_READ | TOKEN_QUERY);
        private static uint TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY |
            TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE |
            TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT |
            TOKEN_ADJUST_SESSIONID);

        [DllImport(&amp;quot;kernel32.dll&amp;quot;, SetLastError = true)]
        static extern IntPtr GetCurrentProcess();

        [DllImport(&amp;quot;advapi32.dll&amp;quot;, SetLastError = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool LookupPrivilegeValue(string lpSystemName, string lpName,
            out LUID lpLuid);

        public const string SE_ASSIGNPRIMARYTOKEN_NAME = &amp;quot;SeAssignPrimaryTokenPrivilege&amp;quot;;

        public const string SE_AUDIT_NAME = &amp;quot;SeAuditPrivilege&amp;quot;;

        public const string SE_BACKUP_NAME = &amp;quot;SeBackupPrivilege&amp;quot;;

        public const string SE_CHANGE_NOTIFY_NAME = &amp;quot;SeChangeNotifyPrivilege&amp;quot;;

        public const string SE_CREATE_GLOBAL_NAME = &amp;quot;SeCreateGlobalPrivilege&amp;quot;;

        public const string SE_CREATE_PAGEFILE_NAME = &amp;quot;SeCreatePagefilePrivilege&amp;quot;;

        public const string SE_CREATE_PERMANENT_NAME = &amp;quot;SeCreatePermanentPrivilege&amp;quot;;

        public const string SE_CREATE_SYMBOLIC_LINK_NAME = &amp;quot;SeCreateSymbolicLinkPrivilege&amp;quot;;

        public const string SE_CREATE_TOKEN_NAME = &amp;quot;SeCreateTokenPrivilege&amp;quot;;

        public const string SE_DEBUG_NAME = &amp;quot;SeDebugPrivilege&amp;quot;;

        public const string SE_ENABLE_DELEGATION_NAME = &amp;quot;SeEnableDelegationPrivilege&amp;quot;;

        public const string SE_IMPERSONATE_NAME = &amp;quot;SeImpersonatePrivilege&amp;quot;;

        public const string SE_INC_BASE_PRIORITY_NAME = &amp;quot;SeIncreaseBasePriorityPrivilege&amp;quot;;

        public const string SE_INCREASE_QUOTA_NAME = &amp;quot;SeIncreaseQuotaPrivilege&amp;quot;;

        public const string SE_INC_WORKING_SET_NAME = &amp;quot;SeIncreaseWorkingSetPrivilege&amp;quot;;

        public const string SE_LOAD_DRIVER_NAME = &amp;quot;SeLoadDriverPrivilege&amp;quot;;

        public const string SE_LOCK_MEMORY_NAME = &amp;quot;SeLockMemoryPrivilege&amp;quot;;

        public const string SE_MACHINE_ACCOUNT_NAME = &amp;quot;SeMachineAccountPrivilege&amp;quot;;

        public const string SE_MANAGE_VOLUME_NAME = &amp;quot;SeManageVolumePrivilege&amp;quot;;

        public const string SE_PROF_SINGLE_PROCESS_NAME = &amp;quot;SeProfileSingleProcessPrivilege&amp;quot;;

        public const string SE_RELABEL_NAME = &amp;quot;SeRelabelPrivilege&amp;quot;;

        public const string SE_REMOTE_SHUTDOWN_NAME = &amp;quot;SeRemoteShutdownPrivilege&amp;quot;;

        public const string SE_RESTORE_NAME = &amp;quot;SeRestorePrivilege&amp;quot;;

        public const string SE_SECURITY_NAME = &amp;quot;SeSecurityPrivilege&amp;quot;;

        public const string SE_SHUTDOWN_NAME = &amp;quot;SeShutdownPrivilege&amp;quot;;

        public const string SE_SYNC_AGENT_NAME = &amp;quot;SeSyncAgentPrivilege&amp;quot;;

        public const string SE_SYSTEM_ENVIRONMENT_NAME = &amp;quot;SeSystemEnvironmentPrivilege&amp;quot;;

        public const string SE_SYSTEM_PROFILE_NAME = &amp;quot;SeSystemProfilePrivilege&amp;quot;;

        public const string SE_SYSTEMTIME_NAME = &amp;quot;SeSystemtimePrivilege&amp;quot;;

        public const string SE_TAKE_OWNERSHIP_NAME = &amp;quot;SeTakeOwnershipPrivilege&amp;quot;;

        public const string SE_TCB_NAME = &amp;quot;SeTcbPrivilege&amp;quot;;

        public const string SE_TIME_ZONE_NAME = &amp;quot;SeTimeZonePrivilege&amp;quot;;

        public const string SE_TRUSTED_CREDMAN_ACCESS_NAME = &amp;quot;SeTrustedCredManAccessPrivilege&amp;quot;;

        public const string SE_UNDOCK_NAME = &amp;quot;SeUndockPrivilege&amp;quot;;

        public const string SE_UNSOLICITED_INPUT_NAME = &amp;quot;SeUnsolicitedInputPrivilege&amp;quot;;

        [StructLayout(LayoutKind.Sequential)]
        public struct LUID
        {
            public UInt32 LowPart;
            public Int32 HighPart;
        }

        [DllImport(&amp;quot;kernel32.dll&amp;quot;, SetLastError = true)]
        static extern bool CloseHandle(IntPtr hHandle);

        public const UInt32 SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001;
        public const UInt32 SE_PRIVILEGE_ENABLED = 0x00000002;
        public const UInt32 SE_PRIVILEGE_REMOVED = 0x00000004;
        public const UInt32 SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000;

        [StructLayout(LayoutKind.Sequential)]
        public struct TOKEN_PRIVILEGES
        {
            public UInt32 PrivilegeCount;
            public LUID Luid;
            public UInt32 Attributes;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct LUID_AND_ATTRIBUTES
        {
            public LUID Luid;
            public UInt32 Attributes;
        }

        // Use this signature if you do not want the previous state
        [DllImport(&amp;quot;advapi32.dll&amp;quot;, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool AdjustTokenPrivileges(IntPtr TokenHandle,
           [MarshalAs(UnmanagedType.Bool)]bool DisableAllPrivileges,
           ref TOKEN_PRIVILEGES NewState,
           UInt32 Zero,
           IntPtr Null1,
           IntPtr Null2);

        static public bool Enable()
        {
            IntPtr hToken;
            LUID luidSEDebugNameValue;
            TOKEN_PRIVILEGES tkpPrivileges;

            if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, out hToken))
            {
                Console.WriteLine(&amp;quot;OpenProcessToken() failed, error = {0} . SeDebugPrivilege is not available&amp;quot;, Marshal.GetLastWin32Error());
                return false;
            }
            else
            {
                Console.WriteLine(&amp;quot;OpenProcessToken() successfully&amp;quot;);
            }

            if (!LookupPrivilegeValue(null, SE_DEBUG_NAME, out luidSEDebugNameValue))
            {
                Console.WriteLine(&amp;quot;LookupPrivilegeValue() failed, error = {0} .SeDebugPrivilege is not available&amp;quot;, Marshal.GetLastWin32Error());
                CloseHandle(hToken);
                return false;
            }
            else
            {
                Console.WriteLine(&amp;quot;LookupPrivilegeValue() successfully&amp;quot;);
            }

            tkpPrivileges.PrivilegeCount = 1;
            tkpPrivileges.Luid = luidSEDebugNameValue;
            tkpPrivileges.Attributes = SE_PRIVILEGE_ENABLED;

            if (!AdjustTokenPrivileges(hToken, false, ref tkpPrivileges, 0, IntPtr.Zero, IntPtr.Zero))
            {
                Console.WriteLine(&amp;quot;LookupPrivilegeValue() failed, error = {0} .SeDebugPrivilege is not available&amp;quot;, Marshal.GetLastWin32Error());
            }
            else
            {
                Console.WriteLine(&amp;quot;SeDebugPrivilege is now available&amp;quot;);
            }
            CloseHandle(hToken);
            return true;
        }
    }
}


&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2882/</id>
    <title type="text">антивирус стоит, конечно. ладно, это пока не мегакритично. поразбираюсь попозже. как пофикшу - отпиш...</title>
    <published>2010-05-17T12:12:00Z</published>
    <updated>2010-05-17T12:12:00Z</updated>
    <author>
      <name>Greene</name>
      <uri>https://stocksharp.com/users/27604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;антивирус стоит, конечно.
ладно, это пока не мегакритично. поразбираюсь попозже.
как пофикшу - отпишусь сюда в чем была проблема.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2881/</id>
    <title type="text">Если под debug права меняются, то рекомендую переставить VS. Антивирусов случаем никаких не стоит? </title>
    <published>2010-05-17T12:06:00Z</published>
    <updated>2010-05-17T12:06:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Если под debug права меняются, то рекомендую переставить VS.
Антивирусов случаем никаких не стоит?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2880/</id>
    <title type="text">winXP pro sp3 </title>
    <published>2010-05-17T10:53:00Z</published>
    <updated>2010-05-17T10:53:00Z</updated>
    <author>
      <name>Greene</name>
      <uri>https://stocksharp.com/users/27604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;winXP pro sp3&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2879/</id>
    <title type="text">Какая ОС? </title>
    <published>2010-05-17T10:36:00Z</published>
    <updated>2010-05-17T10:36:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Какая ОС?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2878/</id>
    <title type="text">Спасибо! Я уже понял, что проблема не связана с вашим фреймворком. Я работаю под администратором в V...</title>
    <published>2010-05-17T09:25:00Z</published>
    <updated>2010-05-17T09:25:00Z</updated>
    <author>
      <name>Greene</name>
      <uri>https://stocksharp.com/users/27604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо!
Я уже понял, что проблема не связана с вашим фреймворком.&lt;/p&gt;
&lt;p&gt;Я работаю под администратором в Visual Studio 2008 Pro. Когда я
запускаю программу из експлорера или в студии без дебага - процесс
убивается нормально. Ошибка возникает только когда я запускаю
программу в студии через &amp;quot;F5&amp;quot; (start debugging). Видимо при этом
используется какая-то другая аутентификация.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2877/</id>
    <title type="text">SmartTrader при старте убивает процесс SmartCOM2.exe (для предотвращения зависания). У Вас видимо пр...</title>
    <published>2010-05-17T02:26:00Z</published>
    <updated>2010-05-17T02:26:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;SmartTrader при старте убивает процесс SmartCOM2.exe (для
предотвращения зависания). У Вас видимо прога не имеет прав к удалению
этому процессу. Критично получить админские права на машину?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2876/</id>
    <title type="text">попробовал приконнектится к квику: var trader = new QuikTrader(&amp;quot;C:\Program Files\Quik5\&amp;quot;); эксепшена...</title>
    <published>2010-05-16T21:20:00Z</published>
    <updated>2010-05-16T21:20:00Z</updated>
    <author>
      <name>Greene</name>
      <uri>https://stocksharp.com/users/27604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;попробовал приконнектится к квику:
var trader = new QuikTrader(&amp;quot;C:\Program Files\Quik5\&amp;quot;);&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;эксепшена не возникает.&lt;/li&gt;
&lt;/ul&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2875/</id>
    <title type="text">Здравствуйте, Михаил. Можете подсказать, пожалуйста, с чем может быть связана следующая проблема? Пр...</title>
    <published>2010-05-16T21:12:00Z</published>
    <updated>2010-05-16T21:12:00Z</updated>
    <author>
      <name>Greene</name>
      <uri>https://stocksharp.com/users/27604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте, Михаил.&lt;/p&gt;
&lt;p&gt;Можете подсказать, пожалуйста, с чем может быть связана следующая
проблема?&lt;/p&gt;
&lt;p&gt;При вызове:
var trader = new SmartTrader(&amp;quot;&amp;lt;my_login&amp;gt;&amp;quot;, &amp;quot;&amp;lt;my_password&amp;gt;&amp;quot;);
получаю ошибку:
17.05.2010 0:05:46: ERROR: System.ComponentModel.Win32Exception:
Отказано в доступе
at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId,
Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.GetProcessHandle(Int32 access,
Boolean throwIfExited)
at System.Diagnostics.Process.Kill()
at Ecng.Trading.Smart.SmartTrader.☻()
at Ecng.Trading.Smart.SmartTrader..ctor(String login, String
password, IPEndPoint endPoint, Boolean isAutoSaveOrders)
at Ecng.Trading.Smart.SmartTrader..ctor(String login, String
password, IPEndPoint endPoint)
at Ecng.Trading.Smart.SmartTrader..ctor(String login, String
password)
at WealthLab.TradingSystemExecutor.Main(String[] args) in D:\home
\HFT\MTS\WealthLab\WealthLab\base\TradingSystemExecutor.cs:line 74&lt;/p&gt;
&lt;p&gt;Программу запускаю под администратором.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>