Process.GetProcesses() and user privilege
I have a VS 2003 C# application that works fine in most environments. It has recently been installed in a corporate environment (WinXP / Server 2003) where the user workstations are pretty well 'tightened-down' from a security point-of-view. The application makes use of the Process.GetProcesses() and it appears that the application throws an exception when this is called due to insufficient privilege. So my question is -- from a security perspective, what changes in groups or policy or whatever need to be made such that Process.GetProcesses() will not throw Obviously, making everyone an admin would solve the problem, but I am looking for something a bit more targeted that will keep their administrator happy.
Thanks!

Process.GetProcesses() and user privilege
gafferuk
Ahh. In v1.x the implementation uses performance counters as Peter said. In v2.0 it uses standard Windows APIs (at least initially) and therefore will work for normal users. I am able to enumerate all processes and acquire the ProcessName, Id and MainWindowHandle values as a normal User with v2.0.
Michael Taylor - 6/13/06
AgentM
Hi Bob,
Have you tried Michael and my suggestion
Did that work for you
If you still have any concern, please feel free to post here.
Best regards,
Peter Huang
Lubo P.
Hi Bob,
You may take a look at the link below.
How to get the Process Name with minimal privilege
http://groups.google.com/group/microsoft.public.dotnet.framework/browse_thread/thread/b4dbe236fca90a46/3c9f7f117d2718d5 lnk=st&q=%22v-phuang%22+process+performance+counter&rnum=2&hl=en#3c9f7f117d2718d5
The MainWindowHandler will also need the performance counter lib.
Also you need to full trust the .NET assembly that need to execute the operation.
Here is a link for your reference.
How to: Grant Permissions to Folders and Assemblies
http://msdn2.microsoft.com/en-us/library/zdc263t0.aspx
If you still have any concern, please feel free to post here.
Best regards,
Peter Huang
Martin Bonner
Getting the list of processes requires a FullTrust assembly. Therefore you can't, for example, run the application across the network. In general you can get the list of processes, as a limited user, but accessing certain fields may cause an exception by the underlying OS because the user doesn't have sufficient rights. I know that you can access the process name and ID without problems. Are there other fields you are trying to access
Michael Taylor - 6/12/06
Tollens
As far as I know, it is not being run across the network -- the code looks something like this:
Process[] aProcesses = Process.GetProcesses(); for (int i=0; i<=aProcesses.GetUpperBound(0); i++) if (aProcesses{
processID = aProcesses
.Id;
break;
}
return processID;