Автор Тема: [Процессы] Помогите мониторить процесс запущенный под конкретным пользователем на сервере  (Прочитано 416 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mayro [?]

  • Новичок
  • *
  • Сообщений: 9
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Версия AutoIt: 3.

Описание:

Помогите написать скрипт, который будет мониторить процесс notepad.exe запущенный только под тем пользователем, под которым запущен сам скрипт AutoIt'а.

Скрипт (см. ниже), мониторит сразу весь компьютер и все учетные записи, а надо мониторить только одного пользователя под которым запущен этот скрипт.

#include <MsgBoxConstants.au3>
Do
If ProcessExists("notepad.exe") Then ; Check if the Notepad process is running.
    MsgBox($MB_SYSTEMMODAL, "", "Notepad is running")
Else
    MsgBox($MB_SYSTEMMODAL, "", "Notepad is not running")
EndIf
 Sleep(2000)
Until False

Спасибо за помощь!

Примечания:

Русское сообщество AutoIt


Помечен как лучший ответ пользователем mayro Отправлен Октябрь 11, 2018, 18:46:27

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
mayro  [?]
Цитировать
мониторить только одного пользователя под которым запущен этот скрипт
При некорректном поиске раскомментируйте всё, что закомментировано
Код: AutoIt [Выделить]
;~ #RequireAdmin

#include <WinAPIProc.au3>

;~ Global $aAdjust
;~ $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
;~ _WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
;~ If @error Or @extended Then Exit MsgBox(0x40000, "", "Ошибка получения привелегий")

$aData = _WinAPI_GetProcessUser(@AutoItPID)
If @error Then Exit MsgBox(0x40000, "", "Ошибка определения имени пользователя")
$sUser = $aData[0]

$aList = ProcessList("notepad.exe")
If Not $aList[0][0] Then Exit MsgBox(0x40000, "", "Процесс 'notepad.exe' не обнаружен")

For $i = 1 To $aList[0][0]
  $aData = _WinAPI_GetProcessUser($aList[$i][1])
  If IsArray($aData) And $aData[0] = $sUser Then ExitLoop
Next
If $i > $aList[0][0] Then Exit MsgBox(0x40000, "", "Процесс пользователя " & $sUser & " не найден")

MsgBox(0x40000, "", "Процесс найден. PID = " & $aList[$i][1])

;~ _WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
;~ _WinAPI_CloseHandle($hToken)


Оффлайн mayro [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Большое спасибо ! Скрипт Работает !  :laugh: :laugh: :laugh: :laugh: :laugh: То что надо!

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
9295 Просмотров
Последний ответ Март 04, 2013, 18:02:13
от zlaya_kisa
4 Ответов
3233 Просмотров
Последний ответ Декабрь 03, 2010, 15:51:26
от CreatoR
4 Ответов
2632 Просмотров
Последний ответ Январь 03, 2013, 09:44:49
от defens
2 Ответов
1265 Просмотров
Последний ответ Май 24, 2014, 11:47:02
от havi
5 Ответов
1745 Просмотров
Последний ответ Июнь 06, 2014, 12:45:21
от alex33
0 Ответов
791 Просмотров
Последний ответ Ноябрь 28, 2014, 13:39:32
от Enforcer
1 Ответов
1311 Просмотров
Последний ответ Февраль 02, 2015, 07:19:37
от madmasles
0 Ответов
244 Просмотров
Последний ответ Июль 31, 2017, 16:08:32
от ramzesranec
3 Ответов
472 Просмотров
Последний ответ Январь 30, 2018, 00:22:46
от yl3d
1 Ответов
207 Просмотров
Последний ответ Ноябрь 17, 2018, 20:14:06
от ra4o