1

Тема: JS: Как получить SID (провайдер WinNT)

каким атрибутом можно получить SID пользователя рабочей станции?

var WshNetwork = new ActiveXObject("WScript.Network");
var NetBIOSWksName = WshNetwork.ComputerName;

var objDomain = GetObject("WinNT://" + NetBIOSWksName);

var en = new Enumerator(objDomain);	
for(; !en.atEnd(); en.moveNext())
	{
	if(en.item().Class == "User")
		{
		WScript.Echo(en.item().objectSID);			// какой атрибут даст SID???
		}
	}

2

Re: JS: Как получить SID (провайдер WinNT)

Мой вариант. Работает с локальным и удаленным компом. Различает локальных и доменных пользователей.

// Return object {name, domain, username, user, SID}
function GetComputerSystem(){
	var r = {};
	try {
		var colItems = objWMIService.ExecQuery ("select * from Win32_ComputerSystem");
		var enumItems = new Enumerator(colItems);
		var objItem = enumItems.item();
		r.name = objItem.Name; // host name
		r.domain = objItem.Domain; // dep.fabrikam.com
		if (objItem.UserName) {
			r.username = objItem.UserName; // DOMAIN\LOGIN
			var du = objItem.UserName.split('\\');
			r.user = du[1];
			if (r.name.toLowerCase() == du[0].toLowerCase()) { // local user
				r.SID = objWMIService.Get("Win32_UserAccount.Domain='" + du[0] + "'" + ",Name='" + du[1] + "'").SID;
			} else { // domain user
				r.SID = GetObject("winmgmts:\\\\.\\Root\\CIMV2").Get("Win32_UserAccount.Domain='" + du[0] + "'" + ",Name='" + du[1] + "'").SID;
			}
		}
	} catch(e) {};
	return r;
}

var host = 'vmxp';
var objSWbemLocator = new ActiveXObject("WbemScripting.SWbemLocator");
var objWMIService = objSWbemLocator.ConnectServer(host, "root\\CIMV2", "Administrator", "gfhjkm");
var ret = GetComputerSystem();

WScript.Echo("Имя компа:" + ret.name);
WScript.Echo("Домен компа:" + ret.domain);
WScript.Echo("Домен\имя залогиненного пользователя:" + ret.username);
WScript.Echo("Имя пользователя:" + ret.user);
WScript.Echo("SID пользователя:" + ret.SID);

3

Re: JS: Как получить SID (провайдер WinNT)

mozers спасибо, работает, однако при указании пользователя и пароля в методе ConnectServer пишет ошибку, что данные пользователя не позволяют локальные соединения. Но если эти параметры опустить, то работает. ещё раз спасибо.

4

Re: JS: Как получить SID (провайдер WinNT)

im2002, скажу больше: Пароль нужен будет только для подключения к удаленному компу на котором ты не являешься администратором. В LANAdmin (откуда я взял этот код) именно так и сделано - запрос пароля появляется только при необходимости.