Имя: Пароль:
1C
 
Получить список процессов на сервере
0 aka MIK
 
19.04.11
19:57
Надо по PID узнать имя пользователя.

win 2003, терминал

tasklist из 1С не запускается, пишет : Интерфейс не зарегистрирован
1 andrewks
 
19.04.11
21:14
полно утилиток всяких есть, которые можно запустить, и вывод потом распарсить.
например: http://www.beyondlogic.org/consulting/processutil/processutil.htm

погугли
2 aleks-id
 
19.04.11
21:21
ищи на сисинтерналсах. там была утиля которая показывает процессы даже на сетевых компах
3 YF
 
19.04.11
21:48
(0) Скриптом vbs мона получить ...
4 DrZombi
 
гуру
19.04.11
22:06
(0)Зачем?
5 DrZombi
 
гуру
19.04.11
22:11
(0)Пиши так :)

глWshShell = CreateObject("WScript.Shell");
oExec=глWshShell.exec("rundll32.exe kernel32,SleepEx");
глLocator=CreateObject("WbemScripting.SWbemLocator");
глService=глLocator.ConnectServer();
глProcessID=глService.Get("Win32_Process.Handle="+oExec.ProcessID).ParentProcessID;    

scrptCtrl=0;
scrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
scrptCtrl.language="vbscript";
scrptCtrl.AddObject("WSHShell",глWshShell);
scrptCtrl.addcode("
|Function GetTheParametr(Param)
|Set WshSysEnv  = WSHShell.Environment(""Process"")
|if Param = 1 then GetTheParametr = WshSysEnv(""Username"")
|if Param = 2 then GetTheParametr = WshSysEnv(""Clientname"")
|if Param = 3 then GetTheParametr = WshSysEnv(""LogonServer"")
|if Param = 4 then GetTheParametr = WshSysEnv(""SessionName"")
|if Param = 5 then GetTheParametr = WshSysEnv(""USERDOMAIN"")
|End Function
|");    

лкUsername      = scrptCtrl.run("GetTheParametr",1);
лкClientname  = scrptCtrl.run("GetTheParametr",2);
лкLogonServer = scrptCtrl.run("GetTheParametr",3);
лкSessionName = scrptCtrl.run("GetTheParametr",4);
лкUSERDOMAIN = scrptCtrl.run("GetTheParametr",4);

scrptCtrl.Reset(); //так и не понял, а накой

//А так получаем загрузку процца...
cur_user_time   = Число(глService.get("win32_process.Handle="+глProcessID).UserModeTime);
cur_kernel_time = Число(глService.get("win32_process.Handle="+глProcessID).KernelModeTime);

Если (СейчасВремя-last_timer) <= 0 Тогда
Расчет_user_time    = 0;
Расчет_kernel_time    = 0;
ИтогоПроцент        = 0;
Иначе
Расчет_user_time    = (cur_user_time - last_user_time) * 0.01 / (СейчасВремя-last_timer);
Расчет_kernel_time    = (cur_kernel_time - last_kernel_time) * 0.01 / (СейчасВремя-last_timer);
ИтогоПроцент        = Цел(Расчет_user_time+Расчет_kernel_time);
КонецЕсли;
6 DrZombi
 
гуру
19.04.11
22:18
+(0)Так же все функции АПИ необходимо подрубать функции.
Но вот только чем... я уже потерял...
В общем это не тоже самое, что писать к примеру на Делфях :(
7 aka MIK
 
20.04.11
10:54
(5) SWbemLocator: Интерфейс не зарегистрирован
8 aka MIK
 
20.04.11
10:59
(1) не пашет

Processor performance object not found on MARS
Try running Exctrlst from microsoft.com to repair the performance counters.