sameralkhalili Ответов: 2

Доступ запрещен при открытом процессе в ASP ?


всем привет

невозможно открыть путь к процессу или приложению после публикации моего asp.net веб-приложение, использующее код c#
Access is denied

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ComponentModel.Win32Exception: Access is denied

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[Win32Exception (0x80004005): Access is denied]
   System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited) +6565246
   System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) +93
   System.Diagnostics.Process.Kill() +46


Что я уже пробовал:

это мой код. :

protected void btnTeamViewer_Click(object sender, ImageClickEventArgs e)
       {
           foreach (Process proc in Process.GetProcessesByName("TeamViewer"))
           {
               proc.Kill();
           }


           string Path = "";
           //PartnerIP = "-i 8.8.8.8 --Password test";
           string curFile = @"C:\Program Files\TeamViewer\Version7\TeamViewer.exe"; // 32bit
           //string curFile = @"C:\Program Files (x86)\TeamViewer\Version9\TeamViewer.exe"; // home
           if (File.Exists(curFile))
           {
               Path = @"C:\Program Files\TeamViewer\Version7\TeamViewer.exe"; // 32bit
               //Path = @"C:\Program Files (x86)\TeamViewer\Version9\TeamViewer.exe"; // home
               Process p = System.Diagnostics.Process.Start(Path, PartnerIP);
               Thread.Sleep(500); // Allow the process to open it's window

           }
           else
           {

               curFile = @"C:\Program Files (x86)\TeamViewer\Version7\TeamViewer.exe";
               if (File.Exists(curFile))
               {
                   Path = @"C:\Program Files (x86)\TeamViewer\Version7\TeamViewer.exe"; // 64bit
                   Process p = System.Diagnostics.Process.Start(Path, PartnerIP);
                   Thread.Sleep(500); // Allow the process to open it's window

               }
               else
               {

               }
           }
       }

2 Ответов

Рейтинг:
1

OriginalGriff

Сообщение об ошибке довольно явное: у вас нет разрешения на закрытие всех процессов TeamViewer на этом компьютере.

Поэтому начните с отладчика и выясните, какой именно процесс вы пытаетесь убить. Затем используйте Диспетчер задач, чтобы найти, кто владеет процессом, и если это тот, кого вы должны пытаться убить.

Мы не можем сделать это для вас - у нас нет доступа к вашей машине!


Рейтинг:
0

Dave Kreskowiak

В этом нет никакого смысла.

ASP.NET код выполняется полностью на сервере, а не на клиентах. Этот код пытается убить TeamViewer на сервере.

Итак, если вы ожидаете, что этот код убьет TeamViewer на клиентских машинах, это вообще не сработает.

Вы также не можете убить процесс на клиенте, даже из javascript, запущенного на HTML-странице, которую получают ваши клиенты.

Вы также не можете запускать процессы на клиентских компьютерах и получать доступ к файловой системе клиентов.