System.ComponentModel.Win32Exception: доступ запрещен в SuperSocket
Я работаю над приложением службы Windows на платформе.NET. Приложение работает без сбоев для одного пользователя Windows, и поначалу я не думал, что на одном компьютере может быть несколько пользователей Windows, и они могут захотеть запустить отдельные экземпляры этого приложения для своего использования. Поэтому, когда пользователь переключает свою учетную запись Windows на другую, вошедший в систему пользователь получит экземпляр службы приложений, работающий должным образом для его среды.
Так что для нескольких пользователей Windows, я хочу разрешить несколько экземпляров приложения. Но проблема в том, что правильно работает только первый экземпляр приложения. Но следующие экземпляры (созданные позже) для других пользователей Windows приводят к этой ошибке. Процессы запущены, но доступ запрещен при попытке инициализации.
System.ComponentModel.Win32Exception (0x80004005): Access is denied
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.OpenProcessHandle(Int32 access)
at System.Diagnostics.Process.set_EnableRaisingEvents(Boolean value)
at SuperSocket.SocketEngine.ProcessPerformanceCounterHelper.RegisterSameNameProcesses(Process process)
at SuperSocket.SocketEngine.ProcessPerformanceCounterHelper..ctor(Process process)
at SuperSocket.SocketEngine.PerformanceMonitor..ctor(IRootConfig config, IEnumerable`1 appServers, IWorkItem serverManager, ILogFactory logFactory)
at SuperSocket.SocketEngine.DefaultBootstrap.Initialize(Func`2 serverConfigResolver, ILogFactory logFactory)
at SuperSocket.SocketEngine.DefaultBootstrap.Initialize(Func`2 serverConfigResolver)
at SuperSocket.SocketEngine.DefaultBootstrap.Initialize()
Сценарий 01: если я выхожу из сервиса от пользователя A, а затем переключаюсь на пользователя B. Тогда служба хорошо работает в Пользователе B.
Сценарий 02: если я не выйду из сервиса от пользователя А, а затем переключусь на пользователя б. Затем процесс запускается, но служба не может быть запущена.
Сценарий-03: Если я напрямую захожу в Пользователь B, то служба запускается без проблем.
После отладки я обнаружил, что указанное выше исключение выдается в строке bootstrap.Start().
class DenticonAppServer
{
IBootstrap bootstrap;
log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public DenticonAppServer()
{
log.Debug("Socket instance Created!\n");
log4net.Config.XmlConfigurator.Configure();
}
private bool Initialize()
{
bootstrap = BootstrapFactory.CreateBootstrap();
if (!bootstrap.Initialize())
{
log.Debug("Failed to initialize Bootstrap!\n");
return false;
}
log.Debug("Bootstrap Initialized!\n");
return true;
}
public void Start()
{
if (bootstrap == null)
{
if (Initialize() == false)
{
return;
}
}
var result = bootstrap.Start();
if (result == StartResult.Failed)
{
log.Debug("Failed to start Bootstrap!\n");
return;
}
log.Debug("Bootstrap Started!\n");
}
public void Stop()
{
bootstrap.Stop();
log.Debug("Bootstrap Stopped!\n");
}
}
Как решить эту ошибку доступа отказано?
Заранее спасибо.