Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/47: Рейтинг темы: голосов - 47, средняя оценка - 4.83
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
1

Мониторинг запускаемых процессов

23.06.2013, 21:36. Просмотров 8468. Ответов 31
Метки нет (Все метки)

Извините пожалуйста за некро, но всёже..
Разъясните пожалуйста как это работает?
Или может для моих задач требуется другое?
Собственно, что бы хотелось увидеть:
1) Монитор процессов (собирать в один файл запущенных за день процессов с временем запуска и учётной записью)
2) Монитор с отсекателем (смотрит запущенные процессы, сравнивает с эталонным который записан в файле, если появляется новый процесс, то он его кладёт в третий файл с временем и учёткой и автоматом его отсекает)

Ещё отдельно хотелось бы узнать: бывает что проги запускаются под одной учёткой от имени другой, скажем так у меня запущена учётка "user" и в этой учётке я запускаю тотал от имени "user2", можно как то и эти данные собрать?

 Комментарий модератора 
Сообщение выделено в новую тему из: Мониторинг и завершение вновь запущенных системных процессов/приложений
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 21:36
Ответы с готовыми решениями:

Мониторинг и завершение вновь запущенных системных процессов/приложений
Здравствуйте уважаемые форумчане! Задача: При старте генерируется файл со списком запущенных...

Типы запускаемых файлов
Как сделать, чтобы в cmd можно было написать, например, run_me.py и при этом запустилось бы python...

Список служб, запускаемых автоматически
Как с помощью командной строки вывести список служб, запускаемых автоматически?

Завершение всех запущенных процессов из находящегося в текстовом файле списка запрещенных к запуску процессов
пожалуйста помогите написать батник. Задать в текстовом файле список процессов, запрещенных к...

Записать в текстовый файл имена запускаемых процессов
Всем привет! Написал монитор процессов, где процессы в списке обновляются каждые 0,5 сек. Теперь...

31
Eva Rosalene
Ladybug
4124 / 1598 / 304
Регистрация: 06.01.2013
Сообщений: 4,193
Завершенные тесты: 2
27.06.2013, 22:11 21
Я похожую вещь писал. Правда работала она только с PID и на определенные процессы (cmd и conhost), убивая новые. Вирус, если интересно
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
27.06.2013, 22:57  [ТС] 22
Цитата Сообщение от Dragokas Посмотреть сообщение
Ок, а какой алгоритм, когда появился новый процесс, которого нет в списке.
1. Запись в лог.
А что дальше: как скрипт будет знать, что этот процесс больше не учитывать - просто запоминать в оперативке?
Пусть при следующем запуске все равно его учитывает и опять пишет в лог?

... а вообще интересная защитная штука получится.
Я думаю здесь требуется построить следующим образом
Первый монитор собирает информацию в лог (запускается один раз, ну или сколько нам надо)
Второй монитор с отсекателем
Смотрит лог разрешённого, если такого процесса в нём нет то данные о процессе заносит в лог2 и отсекает процесс.
Администратор сам мониторит лог2 и если надо ручками его вносит в лог1.
Думаю в лог надо добавить путь к файлу, и если есть возможность хеш

ИЛИ

Всё склепать в один батник и возможность запустить батник с параметрами допустим параметр 1 запуск в режиме монитора, а параметр 2 в режиме отсекателя
1
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
15.07.2013, 11:06  [ТС] 23
UP!
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
22.08.2013, 10:32  [ТС] 24
Во время тестирования выявил в логе вот такой отчёт:
HTML5
1
+ PrintIsolationHost.exe 7604   бЁб⥬* 14:46:46,25 21.08.2013
Добавлено через 18 часов 43 минуты
Bash
1
2
3
Set Exclude=tasklist.exe svchost.exe avp.exe wmiprvse.exe conhost.exe cmd.exe 
Set Exclude=%Exclude% dllhost.exe SearchProtocolHost.exe SearchFilterHost.exe FlashPlayerUpdateService.exe
Set Exclude=%Exclude% taskeng.exe audiodg.exe igfxsrvc.exe find.exe wmic.exe taskhost.exe
Я понимаю что Exclude - это исключение..., а зачем Exclude записан в трёх строчках?
0
22.08.2013, 10:32
DimN
97 / 48 / 0
Регистрация: 14.08.2013
Сообщений: 230
Записей в блоге: 4
22.08.2013, 11:29 25
Складываются они, в одну строку слишком длинно получится. ИМХО.
2
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
30.08.2013, 10:16  [ТС] 26
Обнаружил в логах:
Код
+ wscript.exe		2776	бЁб⥬ 	 8:03:28,39	30.08.2013
+ wscript.exe		3084	бЁб⥬ 	 8:03:36,85	30.08.2013
- wscript.exe		2776	бЁб⥬ 	 8:03:36,86	30.08.2013
- wscript.exe		3084	бЁб⥬ 	 8:03:38,98	30.08.2013
И такое каждый час, как выяснить откуда (путь к файлу) запускается скрипт?
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
04.09.2013, 09:11  [ТС] 27
Как вместо:
Bash
1
Set Exclude=tasklist.exe svchost.exe avp.exe wmiprvse.exe conhost.exe cmd.exe
Указать путь к файлу в котором будут находится эти исключения?
0
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
05.09.2013, 00:20 28
Bash
1
for /F "UseBackQ Delims=" %%? in ("c:\temp\excl.txt") do set Set Exclude=%%?
исключения должны быть записаны в одну строку.

Или
Bash
1
for /F "UseBackQ Delims=" %%? in ("c:\temp\excl.txt") do set Set Exclude=!Exclude! %%?
(исключения должны быть записаны в столбик.)
1
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
17.11.2013, 18:37 29
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Офигеть, я в шоке, нашел через гугл: http://www.youtube.com/watch?v=3WORAgebTv4

А вот, кстати, моя новая версия - на событиях VBScript.
  • Практически не грузит систему.
  • Ведет протокол имен и Process ID запускаемых и завершаемых процессов в файлы формата Plain Text и CSV (лог сохраняется рядом со скриптом).
  • Показывает Имя и ID родительского процесса, а также аргументы запуска
Ограничение: не засекает процессы, время жизни которых менее 1 сек.

Для завершения работы скрипта запустите его еще раз


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
sCurFolder = left(WScript.ScriptFullname, instrrev(WScript.ScriptFullname, "\"))
sLogFile1 = sCurFolder & "Processes.log"
sLogFile2 = sCurFolder & "Processes.csv"
sMarker = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%temp%") & "\Marker_Process_Watcher_Dragokas"
sComputer = "."
 
' Слежение за событием класса Win32_Process каждые 1 секунду
Set objWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
  ("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
 
set oFSO = CreateObject("Scripting.FileSystemObject")
 
' Если уже выполняется монитор, удалить маркер и завершить текущий сценарий
if CheckMarker("Exist") then CheckMarker("Delete"): WScript.Echo "Мониторинг завершен.": WScript.Quit
 
' Создать шапку протокола
set oTS1 = oFSO.CreateTextFile(sLogFile1, true) ' true - overwrite
set oTS2 = oFSO.CreateTextFile(sLogFile2, true) ' true - overwrite
oTS1.WriteLine "Event       Date-Time   PID Process Name    Par.PID Parent Proc.Name    Command Line Arguments"
oTS1.WriteLine "-----       ---------   ----------------    ------- ----------------    ----------------------"
oTS2.WriteLine "Event;Date-Time;Process ID;Process Name;Parent PID;Parent Process Name;Command Line Arguments"
 
sMessage = "Сейчас начнется мониторинг создания/завершения процессов." & vbLf & "Протокол дополняется в файл: " & sLogFile1 & " (.csv)" &_
  vbLf & vbLf & "Чтобы завершить мониторинг, запустите скрипт еще раз :)"
 
' Если скрипт сам себя не перезапускал
if WScript.Arguments.Count = 0 then
    ' Если скрипт запущен под админ. правами
    if isAdminRights() then
        WScript.Echo sMessage
    else
        if Msgbox(sMessage & vbLf & vbLF & "Запустить с правами Администратора?", vbYesNo + VbInformation, "Process Monitor by Dragokas") = vbYes then
             ' Получение прав Администратора
             Elevate()
             WScript.Quit
        end if
    end if
end if
 
CheckMarker("Create")
 
Do
    ' Ожидаем события
    Set objLatestEvent = colMonitoredEvents.NextEvent()
 
    set oProc = objLatestEvent.TargetInstance
 
    ' Проверяем вид события
    Select Case objLatestEvent.Path_.Class
      Case "__InstanceCreationEvent"
        if not CheckMarker("Exist") then Exit Do
        oTS1.WriteLine "Created" & ProcInfo(oProc, vbTab)
        oTS2.WriteLine "Created" & ProcInfo(oProc, ";")
      Case "__InstanceDeletionEvent"
        if not CheckMarker("Exist") then Exit Do
        oTS1.WriteLine "Deleted" & ProcInfo(oProc, vbTab)
        oTS2.WriteLine "Deleted" & ProcInfo(oProc, ";")
    End Select
Loop
 
' Закрываем файл-протокол
oTS1.Close()
oTS2.Close()
 
set oProc = Nothing: set objLatestEvent = Nothing: set oFSO = Nothing: set oTS = Nothing: Set colMonitoredEvents = Nothing: Set objWMIService = Nothing
 
Function ProcInfo(objProcess, Delim) ' Получения свойств события процесса, определение родительского процесса
  with objProcess
    ParentPID = .ParentProcessId
    if ParentPID <> 0 then
        set oParentProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = '" & ParentPID & "'")
        if not oParentProcesses is Nothing then
            For each oParentProc in oParentProcesses
                ParentName = oParentProc.Name
            next
            set oParentProcesses = Nothing: set oParentProc = Nothing
        end if
        set oParentProc = Nothing
    end if
    ProcInfo = Delim & Now & Delim & .ProcessId & Delim & .Name & Delim & .ParentProcessId & Delim & ParentName & Delim & .CommandLine
  end with
End function
 
Function CheckMarker(Action) ' Слежение за маркером запуска/завершения монитора
  Select case Action
    Case "Create"
      set oMarker = oFSO.CreateTextFile(sMarker, true)
      oMarker.Close()
      set oMarker = Nothing
    Case "Delete"
      On error resume next
      For N = 1 to 10
        oFSO.DeleteFile sMarker, true 'true - Read Only Force
        if Err = 0 then Exit For
        Err.Clear
        WScript.Sleep(100) 'Если возник конфликт общего доступа, ждем 100 мс. и повторим
      next
      On error Goto 0
    Case "Exist"
      CheckMarker = oFSO.FileExists(sMarker)
  End Select
End Function
 
Sub Elevate()
  Const DQ = """"
  Set colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
  For Each oOS In colOS
    strOSLong = oOS.Version
  Next
  If Left(strOSLong, 1) = "6" Then
    If Not isAdminRights Then
        Set oShellApp = CreateObject("Shell.Application")
        oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ & " " & DQ & "Twice" & DQ, "", "runas", 1
        WScript.Quit
    End If
  End If
  set oOS = Nothing: set colOS = Nothing: set oShellApp = Nothing
End Sub
 
Function isAdminRights()
    Const KQV = &H1, KSV = &H2, HKCU = &H80000001, HKLM = &H80000002
    Set oReg = GetObject("winmgmts:root\default:StdRegProv")
    strKey = "System\CurrentControlSet\Control\Session Manager"
    intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
    isAdminRights = flagAccess
    Set oReg = Nothing
End Function
3
Миниатюры
Мониторинг запускаемых процессов  
Вложения
Тип файла: zip Process_Monitor2.zip (2.2 Кб, 72 просмотров)
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
25.08.2015, 09:36  [ТС] 30
Dragokas, Привет, давно уже не пользовался этой штукой, но вот понадобилась... очень полезная она.
Но заметил какую то странность, закрывается сама по себе ровно в 20:44.
Единственное чего ещё не хватает в логе информации о учётной записи от которой запускается процесс.
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
01.09.2015, 09:46  [ТС] 31
При создании лога думаю в название надо добавить дату и время запуска
0
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
02.11.2016, 22:56 32
Новая версия v2.2.
  • Добавлена совместимость с Windows 2000 и Windows 10.
    Примечание: в windows 2000 вывод аргументов запуска процесса будет недоступен.
  • Добавлен вывод имени пользователя / домен, запустившего процесс.
  • Улучшено форматирование TXT формата лога.
  • Отчёт создаётся с датой / временем в имени файла (можно отключить константой в шапке скрипта).
Кликните здесь для просмотра всего текста


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
' Task Monitor v.2.2
'
' by Alex Dragokas
 
Const AddTimeToLogName = true
 
Dim bWin2000: bWin2000 = isWin2000()
Dim oDict: set oDict = CreateObject("Scripting.Dictionary")
 
sCurFolder = left(WScript.ScriptFullname, instrrev(WScript.ScriptFullname, ""))
 
if AddTimeToLogName then
    sTime = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "_" & Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
    
    sLogFile1 = sCurFolder & "Processes_" & sTime & ".log"
    sLogFile2 = sCurFolder & "Processes_" & sTime & ".csv"
else
    sLogFile1 = sCurFolder & "Processes.log"
    sLogFile2 = sCurFolder & "Processes.csv"
end if
sMarker = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%temp%") & "\Marker_Process_Watcher_Dragokas"
sComputer = "."
 
' Слежение за событием класса Win32_Process каждые 1 секунду
Set objWMIService = GetObject("winmgmts:" & sComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
  ("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
 
set oFSO = CreateObject("Scripting.FileSystemObject")
 
' Если уже выполняется монитор, удалить маркер и завершить текущий сценарий
if CheckMarker("Exist") then CheckMarker("Delete"): WScript.Echo "Мониторинг завершен.": WScript.Quit
 
sMessage = "Сейчас начнется мониторинг создания/завершения процессов." & vbLf & "Протокол дополняется в файл: " & sLogFile1 & " (.csv)" &_
  vbLf & vbLf & "Чтобы завершить мониторинг, запустите скрипт еще раз :)"
 
' Если скрипт сам себя не перезапускал
if WScript.Arguments.Count = 0 then
    ' Если скрипт запущен под админ. правами
    if isAdminRights() then
        WScript.Echo sMessage
    else
        if Msgbox(sMessage & vbLf & vbLF & "Запустить с правами Администратора?" & vbCrLf & vbCrLf & "НЕТ - запустить с ограниченными правами.", vbYesNo + VbInformation, "Task Monitor by Dragokas") = vbYes then
             ' Получение прав Администратора
             Elevate()
             WScript.Quit
        end if
    end if
end if
 
' Создать шапку протокола
set oTS1 = oFSO.CreateTextFile(sLogFile1, true) ' true - overwrite
set oTS2 = oFSO.CreateTextFile(sLogFile2, true) ' true - overwrite
oTS1.WriteLine "Event       Date-Time   PID Process Name    Par.PID Parent Proc.Name    Domain\Username     Command Line Arguments"
oTS1.WriteLine "-----       ---------   ----    ------------    ------- ----------------    ---------------     ----------------------"
oTS2.WriteLine "Event;Date-Time;Process ID;Process Name;Parent PID;Parent Process Name;User;Command Line Arguments"
 
CheckMarker("Create")
 
Delim_Pl = vbTab
Delim_CS = ";"
 
Do
    ' Ожидаем события
    Set objLatestEvent = colMonitoredEvents.NextEvent()
 
    set oProc = objLatestEvent.TargetInstance
 
    ' Проверяем вид события
    Select Case objLatestEvent.Path_.Class
      Case "__InstanceCreationEvent"
        if not CheckMarker("Exist") then Exit Do
        ProcInfo oProc, "Created", txtPlain, txtCSV
        oTS1.WriteLine "Created" & txtPlain
        oTS2.WriteLine "Created" & txtCSV
      Case "__InstanceDeletionEvent"
        if not CheckMarker("Exist") then Exit Do
        ProcInfo oProc, "Deleted", txtPlain, txtCSV
        oTS1.WriteLine "Deleted" & txtPlain
        oTS2.WriteLine "Deleted" & txtCSV
    End Select
Loop
 
' Закрываем файл-протокол
oTS1.Close()
oTS2.Close()
 
set oProc = Nothing: set objLatestEvent = Nothing: set oFSO = Nothing: set oTS = Nothing: Set colMonitoredEvents = Nothing: Set objWMIService = Nothing: set oDict = Nothing
 
Sub ProcInfo(objProcess, EventType, txtPlain, txtCSV) ' Получения свойств события процесса, определение родительского процесса
  with objProcess
    ParentPID = .ParentProcessId
    if ParentPID <> 0 then
        set oParentProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = '" & ParentPID & "'")
        if not oParentProcesses is Nothing then
            For each oParentProc in oParentProcesses
                ParentName = oParentProc.Name
            next
            set oParentProcesses = Nothing: set oParentProc = Nothing
        end if
        set oParentProc = Nothing
    end if
 
    txtPlain = Delim_Pl & Now & Delim_Pl & .ProcessId & Delim_Pl & .Name:      if len(.Name) < 8      then txtPlain = txtPlain & Delim_Pl
    txtPlain = txtPlain & Delim_Pl & .ParentProcessId & Delim_Pl & ParentName: if len(ParentName) < 8 then txtPlain = txtPlain & Delim_Pl
    
    txtCSV   = Delim_CS & Now & Delim_CS & .ProcessId & Delim_CS & .Name & Delim_CS & .ParentProcessId & Delim_CS & ParentName
    
    ' поле пользователь / домен недоступно для события "Процесс завершен".
    if EventType <> "Deleted" then
        On Error Resume next
        objProcess.GetOwner strUserName, strUserDomain
        On Error Goto 0
        
        txtPlain = txtPlain & Delim_Pl & Delim_Pl & strUserDomain & "" & strUserName
        txtCSV   = txtCSV   & Delim_CS            & strUserDomain & "" & strUserName
        
        if len(strUserDomain & "" & strUserName) < 16 then txtPlain = txtPlain & Delim_Pl
        
        if not oDict.Exists(.ProcessId) then
            oDict.Add .ProcessId, strUserDomain & "" & strUserName
        else
            oDict(.ProcessId) = strUserDomain & "" & strUserName
        end if
    else
        if oDict.Exists(.ProcessId) then
            txtPlain = txtPlain & Delim_Pl & Delim_Pl & oDict(.ProcessId)
            txtCSV   = txtCSV   & Delim_CS            & oDict(.ProcessId)
            
            if len(oDict(.ProcessId)) < 16 then txtPlain = txtPlain & Delim_Pl
        else
            txtPlain = txtPlain & Delim_Pl & Delim_Pl & Delim_Pl & Delim_Pl
            txtCSV   = txtCSV   & Delim_CS
        end if
    end if
    if bWin2000 then
        txtPlain = txtPlain & Delim_Pl & "unknown"
        txtCSV   = txtCSV   & Delim_CS & "unknown"
    else
        txtPlain = txtPlain & Delim_Pl & .CommandLine
        txtCSV   = txtCSV   & Delim_CS & .CommandLine
    end if
    
  end with
End sub
 
Function CheckMarker(Action) ' Слежение за маркером запуска/завершения монитора
  Select case Action
    Case "Create"
      set oMarker = oFSO.CreateTextFile(sMarker, true)
      oMarker.Close()
      set oMarker = Nothing
    Case "Delete"
      On error resume next
      For N = 1 to 10
        oFSO.DeleteFile sMarker, true 'true - Read Only Force
        if Err = 0 then Exit For
        Err.Clear
        WScript.Sleep(100) 'Если возник конфликт общего доступа, ждем 100 мс. и повторим
      next
      On error Goto 0
    Case "Exist"
      CheckMarker = oFSO.FileExists(sMarker)
  End Select
End Function
 
Sub Elevate()
  Const DQ = """"
  Set colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
  For Each oOS In colOS
    strOSLong = oOS.Version
  Next
  If instr(strOSLong, "6.") = 1 or instr(strOSLong, "10.") = 1 Then
    If Not isAdminRights Then
        Set oShellApp = CreateObject("Shell.Application")
        oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ & " " & DQ & "Twice" & DQ, "", "runas", 1
        WScript.Quit
    End If
  End If
  set oOS = Nothing: set colOS = Nothing: set oShellApp = Nothing
End Sub
 
Function isAdminRights()
    Const KQV = &H1, KSV = &H2, HKCU = &H80000001, HKLM = &H80000002
    Set oReg = GetObject("winmgmts:root\default:StdRegProv")
    strKey = "System\CurrentControlSet\Control\Session Manager"
    intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
    isAdminRights = flagAccess
    Set oReg = Nothing
End Function
 
Function isWin2000()
    Set colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
    For Each oOS In colOS
      if instr(oOS.Version, "5.0.") = 1 then isWin2000 = true
    Next
End Function
1
Вложения
Тип файла: zip Task_Monitor_v2.2.zip (2.8 Кб, 18 просмотров)
02.11.2016, 22:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2016, 22:56

Мониторинг состояния процессов
День добрый. нужно написать программу, реализующую мониторинг состояния процессов Unix. Схема...

Solaris Мониторинг системных процессов
Добрый вечер! Есть аппликейшн сервер. На сервере крутится Apach. На сервере установлена Solaris....

C# Мониторинг и обновление процессов Windows
Здравствуйте! Я самостоятельно занимаюсь программированием на C#, придумываю себе некоторые задачи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru