Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


Имя компании достаётся непосредственно из свойств exe-файла службы. Больше неоткуда.
Есть у меня рабочий вариант и для XP (на jscript). Проверял.
Нужное раскомментить.
Код: Выделить весь код
var shellapp = new ActiveXObject("Shell.Application");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\CIMv2");
var serv = wmi.ExecQuery("SELECT Name, DisplayName, PathName, StartMode, State FROM Win32_Service");

for (var e = new Enumerator(serv), s, sp, f;
	!e.atEnd() && (s = e.item());
	e.moveNext()
) {
	var exe = s.PathName.replace(/^\s+|\s+$/g, "").replace(/\s+/g, " ");
	var RealExePath = exe.charAt(0) === '"'
		? exe.substring(1, exe.indexOf('"', 1))
		: (/\.exe$/i.test(exe) || (sp = exe.indexOf(" ", 1)) === -1
			? exe
			: exe.substring(0, sp)
		);

	//do we need svchosts?
	if (/svchost(?:\.exe)?$/i.test(RealExePath)) continue;

	WSH.Echo(s.Name + " (" + s.DisplayName + ")");
	WSH.Echo("Stat:", s.StartMode, s.State);
	WSH.Echo("PathName: " + s.PathName);
	WSH.Echo("Exe: " + RealExePath);

	try {
		f = fso.GetFile(RealExePath);
	} catch (ex) {
		try {
			f = fso.GetFile(RealExePath + ".exe");
		} catch (ex) {
			WSH.Echo(ex.message + ": " + RealExePath + "\n");
			continue;
		}
	}

	var comp = shellapp.Namespace(f.ParentFolder + "")
		.ParseName(f.Name + "")
		.ExtendedProperty("Company") || "Empty";
	WSH.Echo("Company: " + comp);

	if (!/Microsoft|Майкрософт/i.test(comp)) { //ANSI cyrillic encoding!
		WSH.Echo("Non-microsoft service found");
		//Disabled, Automatic, Manual
		//WSH.Echo("ChangeStartMode returned " + s.ChangeStartMode("Manual"));
		//WSH.Echo("StopService returned " + s.StopService());
	}

	WSH.Echo();
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:59, 18-12-2019 | #12