cyberproject
asked on
How to List processes by user and session ID
Hi, I need VB6 code to get the list of processes on a PC that works with multiple users and sessions, that is a Windows XP with Terminal Server capabilities, ultra thin clients connect to that server. We found it possible through WMI, but it consumes lots of CPU, we need another API method that gives us user and session ID of every process on the machine
This has been a long standing issue for me too. WMI is slow, and I did find a solution using API only. I haven't tested this completely yet, so you may want to wait for a few minutes until I get this thing working properly. The bad thing is that I'm not sure if this works on a Terminal Services environment...
Anyway, if you feel like digging a little deeper, take a look at this:
http://msdn2.microsoft.com/en-us/library/aa382990.aspx
Looks like it may solve your problem completely, but I have not tested it (yet). I'm curious enough to try to make this work, so I'll do it as soon as I have the time.
Hope this helps!
TCV
Anyway, if you feel like digging a little deeper, take a look at this:
http://msdn2.microsoft.com/en-us/library/aa382990.aspx
Looks like it may solve your problem completely, but I have not tested it (yet). I'm curious enough to try to make this work, so I'll do it as soon as I have the time.
Hope this helps!
TCV
OK, managed to get user names from processes... but only SYSTEM and processes runing on the same user name as the user launching the app (that would be me). For all other processes, I would probably have to use an impersonation token, or something like that. BUT, I found some working code for XP/2003 machines. Maybe you can use it:
http://www.xtremevbtalk.com/showthread.php?t=240098
It should be easy to adapt to your needs.
TCV
http://www.xtremevbtalk.com/showthread.php?t=240098
It should be easy to adapt to your needs.
TCV
ASKER
Th last you sent Tacovino, is great. Works perfect if you logged on Windows as administrator. But my soft uses a "Run As" to relunch itself with an admin account, from a restricted user account that was originally logged on Windows. I mean, the user is in a restricted not Admin account, but my soft runs itself with a preconfigured admin account to get all the rights. The thing is that in every aspect I have admin priviledges, but the api WTSEnumProcesses used in the example returns fail in this case.
any ideas? , thanks
any ideas? , thanks
As far as I know, there are some privileges regarding processes that not even the Admin group has. I'm not sure how you implemented the "Run As" part, but if possible, try to make it run under SYSTEM account instead of and Admin account. Remember that the SYSTEM account you need to use is the "server" system account (the server running terminal services).
TCV
TCV
ASKER
I tested the project, logging with an admin account normally on the client, and still doesn´t work. That means the server doesn´t give me the right just because my session is remote. I´m logging ini from an ultra thin client hardware client. (www.ncomputing.com). I read that for this api to work I need "query information priviledges", don´t know how to get it.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54119&lngWId=1
Also from EE
https://www.experts-exchange.com/questions/21419825/vb6-getprocess-list-processes-has-marks-in-some-processes.html