H
howard39
We a Web application that has been running for months, but suddenly (i.e.
over the weekend) stopped working.
To narrow down the problem, I wrote the followng page_load handler in an
ASP.Net test application:
public void Page_Load(Object sender, EventArgs e)
{
Process currentProcess = Process.GetCurrentProcess();
Process [] localByName = Process.GetProcessesByName("notepad");
}
GetCurrentProcess works, but GetProcessesByName throws the exception that I
have appended to this message.
The same code in a Console application works fine. The ASP.Net worker
process is a member of the User group. However changing it to Administrator
does not help. Nor does changing to Impersonation. Nor does including the
name of my machine in GetProcessesByName.
Would apreciate help on this.
THE EXCEPTION MESSAGE (Note the "Couldn't get process information from
remote machine" exception):
Exception Details: System.ComponentModel.Win32Exception: Access is denied
Source Error:
Line 22: {
Line 23: Process currentProcess = Process.GetCurrentProcess();
Line 24: Process [] localByName = Process.GetProcessesByName("notepad");
Line 25: }
Line 26:
Source File: c:\inetpub\wwwroot\testwebapplication\webform1.aspx.cs Line:
24
Stack Trace:
[Win32Exception (0x80004005): Access is denied]
System.Diagnostics.PerformanceMonitor.GetData(String item) +496
System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item)
+158
System.Diagnostics.PerformanceCounterLib.get_CategoryTable() +80
System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String[]
categories, Int32[] categoryIndexes) +56
System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib
library) +157
[InvalidOperationException: Couldn't get process information from remote
machine.]
System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib
library) +259
System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName,
Boolean isRemoteMachine) +152
System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) +37
System.Diagnostics.Process.GetProcessesByName(String processName, String
machineName) +69
System.Diagnostics.Process.GetProcessesByName(String processName) +11
TestWebApplication.WebForm1.Page_Load(Object sender, EventArgs e) in
c:\inetpub\wwwroot\testwebapplication\webform1.aspx.cs:24
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
over the weekend) stopped working.
To narrow down the problem, I wrote the followng page_load handler in an
ASP.Net test application:
public void Page_Load(Object sender, EventArgs e)
{
Process currentProcess = Process.GetCurrentProcess();
Process [] localByName = Process.GetProcessesByName("notepad");
}
GetCurrentProcess works, but GetProcessesByName throws the exception that I
have appended to this message.
The same code in a Console application works fine. The ASP.Net worker
process is a member of the User group. However changing it to Administrator
does not help. Nor does changing to Impersonation. Nor does including the
name of my machine in GetProcessesByName.
Would apreciate help on this.
THE EXCEPTION MESSAGE (Note the "Couldn't get process information from
remote machine" exception):
Exception Details: System.ComponentModel.Win32Exception: Access is denied
Source Error:
Line 22: {
Line 23: Process currentProcess = Process.GetCurrentProcess();
Line 24: Process [] localByName = Process.GetProcessesByName("notepad");
Line 25: }
Line 26:
Source File: c:\inetpub\wwwroot\testwebapplication\webform1.aspx.cs Line:
24
Stack Trace:
[Win32Exception (0x80004005): Access is denied]
System.Diagnostics.PerformanceMonitor.GetData(String item) +496
System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item)
+158
System.Diagnostics.PerformanceCounterLib.get_CategoryTable() +80
System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String[]
categories, Int32[] categoryIndexes) +56
System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib
library) +157
[InvalidOperationException: Couldn't get process information from remote
machine.]
System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib
library) +259
System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName,
Boolean isRemoteMachine) +152
System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) +37
System.Diagnostics.Process.GetProcessesByName(String processName, String
machineName) +69
System.Diagnostics.Process.GetProcessesByName(String processName) +11
TestWebApplication.WebForm1.Page_Load(Object sender, EventArgs e) in
c:\inetpub\wwwroot\testwebapplication\webform1.aspx.cs:24
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731