Обычно мы не будем давать рекомендации такого рода, но я могу представить вам 2 варианта:
1)System Center - я знаю, что у вас его нет, но вы можете попробовать его, получить данные и затем удалить их.
2) Расписание задач GPO. Однажды меня попросили контролировать использование программного обеспечения с ограниченным бюджетом. Я сделал это путем создания базы данных SQL (хотя текстовые файлы или другой формат БД будет работать. Затем я создал VBS, который проверил наличие приложения (winword.exe - это word, excel.exe - это excel и т.д.). Если он обнаружит этот процесс Windows, он подключится к базе данных SQL и зарегистрирует время / дату, машину, пользователя, приложение. Я развернул этот сценарий как запланированную задачу через объект групповой политики, которая будет выполняться каждые 15 минут на заданном наборе машин и в течение нескольких дней, а некоторые варианты SQL-запросов позже у меня был пример использования программного обеспечения.
Хотя вариант 2 не является пуленепробиваемым и полагается на то, что при запуске скрипта пользователи открывают приложения, большинство пользователей, работающих с электронной почтой outlook или над документом / таблицей Word, открывают его в течение 15 минут, особенно если его часть их работа.
Что-то вроде этого следует сделать для начала:«При возобновлении ошибки дальше пользователи не будут видеть сообщения. Удалить при разработке
On Error Resume Next
'Get Computer Name
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
strComputerName = wshNetwork.ComputerName
WScript.Echo strComputerName
'Get User Name
strUserName = wshNetwork.UserName
WScript.Echo strUserName
sComputerName = "."
'Connect to local machine and get all process names
Set objWMIService = GetObject("winmgmts:\\" & sComputerName & "\root\cimv2")
sQuery = "SELECT * FROM Win32_Process"
Set objItems = objWMIService.ExecQuery(sQuery)
'For Each Process Name
For Each objItem In objItems
'If name is winword or excel.exe (upper case to avoid possible case issues)
if UCase(objItem.Name) = "WINWORD.EXE" or UCase(objItem.Name) = "EXCEL.EXE" Then
'connect to SQL
set con = createobject("ADODB.Connection")
con.open "Provider=sqloledb;Server=SERVERNAME;Database=DBNAME;User Id=sa;Password=PASSWORDHERE;"
'Construct insert statement
sSQL = "INSERT INTO tblSoftwareAudit VALUES ('" & strComputerName & "', '" & strUserName & "', '" & objItem.Name & "', '" & FormatDateTime(Now) & "')"
'insert SQL statement
set rst = con.execute(sSQL)
End If
Next