powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите разобраться с процессами
6 сообщений из 31, страница 2 из 2
Помогите разобраться с процессами
    #38390745
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новая проблема. На сервере в терминалах работают несколько юзеров. Данный метод находит первый попавшийся bank.exe другого юзера. Надо теперь еще и имя юзера как-то учесть.
loItems = loWMI.ExecQuery("Select * From Win32_Process") - туда возвращаются имена пользователя? Я не могу найти как его вытащить.
loItems.csname вытаскиваем имя компа
есть метод в Win32_Process - getowner, но не пому как работает и то ли это что мне надо....
...
Рейтинг: 0 / 0
Помогите разобраться с процессами
    #38391840
В цикле делаешь проверку
NameOfUser = ""
ErrorCode = loItem.GetOwner(NameOfUser)
IF ErrorCode <> 0
значит какая-то ошибка, коды ошибок:
0
Successful Completion
2
Access Denied
3
Insufficient Privilege
8
Unknown Failure
9
Path Not Found
21
Invalid Parameter
ELSE
WAIT WINDOW NameOfUser
ENDIF
...
Рейтинг: 0 / 0
Помогите разобраться с процессами
    #38392511
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, помогли очень. Полный текст такой (анализ ошибок не делал, т.к. он не нужен)
авторloWMI = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\.\root\cimv2")
loItems = loWMI.ExecQuery("Select * From Win32_Process where Name='bank.exe'")
LocShe = CreateObject("WScript.Shell")
nPID=0
FOR EACH loItem in loItems
IF UPPER(loItem.Name) = "BANK.EXE" &&Проверка на всякий случай
NameOfUser = ""
ErrorCode = loItem.GetOwner(NameOfUser)
IF ErrorCode=0 AND ALLTRIM(UPPER(NameOfUser))=ALLTRIM(UPPER(ALLTRIM(SUBSTR(SYS(0),AT('#',SYS(0))+1))))
nPID=LoItem.ProcessID
LocShe.AppActivate(nPID)
LocShe.SendKeys("%+{Enter}")
ENDIF
ENDIF
ENDFOR
IF nPID=0
LocShe.Run('bank.exe',3,0)
ENDIF
RELEASE LocShe
...
Рейтинг: 0 / 0
Помогите разобраться с процессами
    #38393361
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новый день принес новую проблему. Когда идет запуск в RDP из под админксой учетки - все нормально, сам все проверил - успокоился. Юзеры утром пришли - не запускается.
на строке
ErrorCode = loItem.GetOwner(NameOfUser)
пишет "ole exception error: exception code c0000005 object may be corrupt"
...
Рейтинг: 0 / 0
Помогите разобраться с процессами
    #38393452
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если вместо
NameOfUser = ""
ErrorCode = loItem.GetOwner(NameOfUser)
делаю
PUBLIC NameOfUser
ErrorCode = loItem.GetOwner(NameOfUser)
то возвращает ответ ErrorCode = 2 - то есть нет доступа и NameOfUser = .T.

но когда ставлю NameOfUser = "" - то вышеуказанная ошибка возникает
...
Рейтинг: 0 / 0
Помогите разобраться с процессами
    #38393519
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, добил, немного костылями, но работает, выделенное жирным - изменения
loWMI = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\.\root\cimv2")
loItems = loWMI.ExecQuery("Select * From Win32_Process where Name='bank.exe'")
LocShe = CreateObject("WScript.Shell")
nPID=0
FOR EACH loItem in loItems
IF UPPER(loItem.Name) = "BANK.EXE"
PUBLIC NameOfUser
NameOfUser = ""
OLEerror=0
ON ERROR OLEerror=1
ErrorCode = loItem.GetOwner(NameOfUser)
ON ERROR

IF OLEerror=0 AND ErrorCode=0 AND ALLTRIM(UPPER(NameOfUser))=ALLTRIM(UPPER(ALLTRIM(SUBSTR(SYS(0),AT('#',SYS(0))+1))))
nPID=LoItem.ProcessID
LocShe.AppActivate(nPID)
LocShe.SendKeys("%+{Enter}")
ENDIF
RELEASE NameOfUser
ENDIF
ENDFOR
IF nPID=0
LocShe.Run('bank.exe')
ENDIF
RELEASE LocShe
Дело в том, что юзеру нет доступа к чужим процессам, я просто скипаю ошибки
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите разобраться с процессами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]