Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Проблемы с определением SID пользователя

Ответить
Настройки темы
VBS/WSH/JS - Проблемы с определением SID пользователя

Новый участник


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

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


Вот рабочий сценарий для определения SID.

SID мне нужен для работы с реестром в разделе HKU.
Помимо прочего необходимо также добавлять и изменять параметры в разделе HKLM.
Так как у пользователей нет прав администратора - скрипт приходится запускать из под учетки с правами админа.
А вот здесь и проблема. Если запустить сценарий ниже с правами админа - я получаю SID учетки этого админа, а не текущего залогиненного пользователя.
Как получить SID текущего пользователя вошедшего в систему ?

Код: Выделить весь код
Set wshShell = CreateObject( "WScript.Shell" )
strUserName = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get("Win32_UserAccount.Name='" & strUsername & "',Domain='" & strComputer & "'")
getSID = objAccount.SID
MsgBox getSID

Отправлено: 10:06, 21-03-2019

 

Ветеран


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

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


Это плохая идея: пользователь вообще может быть не залогинен. А может быть залогинено несколько пользователей.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:02, 21-03-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Старожил


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

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


Цитата macF:
Как получить SID текущего пользователя вошедшего в систему ? »
Powershell & WMI
Можно оформить в виде функции...
Для powershell v 2.0, необходимо заменить gcim на gwmi
Код: Выделить весь код
$loginuser = (gcim win32_computersystem).username|split-path -leaf  
$user = gcim win32_useraccount|
?{$_.disabled -eq $false -and ($_.name -eq $loginuser -or $_.fullname -eq $loginuser)}|
select name,fullname,sid
$userprofile = gcim win32_userprofile|
?{$_.special -eq $false -and $_.loaded -eq $true -and $_.sid -eq $user.sid}|select sid,localpath

$user|add-member -mem noteproperty -name 'LocalPath' -value $($userprofile.localpath)

$user|fl *

-------
scio me nihil scire


Отправлено: 12:34, 21-03-2019 | #3


Ветеран


Contributor


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

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


macF, проблема в том, что Вы что-то делаете не так. Не работайте с HKU. Работайте с HKCU из logon-скриптов. С HKLM работайте из startup-скриптов. Не должно быть никаких:
Цитата macF:
Помимо прочего необходимо также добавлять и изменять параметры в разделе HKLM.
Так как у пользователей нет прав администратора - скрипт приходится запускать из под учетки с правами админа. »

Отправлено: 23:24, 21-03-2019 | #4


Новый участник


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

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


Цитата:
Это плохая идея: пользователь вообще может быть не залогинен. А может быть залогинено несколько пользователей.
У нас рабочая группа. Win7 и выше.
Сценарий запускается штатно из планировщика с правами админа при входе любого пользователя и задержкой 1 минута.
За АРМ всегда работает только один юзер. Смена пользователя не активна.

Цитата:
macF, проблема в том, что Вы что-то делаете не так. Не работайте с HKU. Работайте с HKCU из logon-скриптов. С HKLM работайте из startup-скриптов.
Сама затея здесь предельно проста: не дать юзеру нажать (если ему вдруг вздумается) через меню пуск на рестарт, выключение, завершения сеанса или смена пользователя во время выполнения архивации. Только блокировка.

1. До архивации WBadmin оставить в меню пуск только кнопку блокировать (без перезагрузки).
Ручками вот это работает:

Код: Выделить весь код
'Убрать из меню пуск все кнопки КРОМЕ завершение сеанса, сменить пользователя, блокировать! 
RegShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoClose", "1", "REG_DWORD"
'Сменить пользователя"
RegShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\HideFastUserSwitching", "1", "REG_DWORD"
'Выйти из системы"
RegShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\StartMenuLogOff", "1", "REG_DWORD"
А это работает только если получить SID текущего порльзователя!
Код: Выделить весь код
'Выбрать блокировку в меню пуск по умолчанию
RegShell.RegWrite "HKEY_USERS\"&getSID&"\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_PowerButtonAction", "200", "REG_DWORD"
далее обновить групповую политику для приминения изменений
Код: Выделить весь код
Start=WshShell.Run("""C:\Windows\System32\gpupdate.exe"" /force",1,true)
Я бы в этот раздел HKU просто так и не лез бы. Может Вы знаете как это реализовать в HKLM или HKCU ? Я ничего рабочего для себя так и не нашел.
Через gpedit.msc тема таже. Разница только в том что там два параметра и тот же HKU.

Отправлено: 02:46, 22-03-2019 | #5


Ветеран


Contributor


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

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


Цитата macF:
Цитата Busla:
Это плохая идея: пользователь вообще может быть не залогинен. А может быть залогинено несколько пользователей. »
У нас рабочая группа. Win7 и выше. »
macF, это вообще никак не кореллирует — наличествует домен, або нет, Windows XP или Windows 7.

Цитата macF:
Сама затея здесь предельно проста: не дать юзеру нажать (если ему вдруг вздумается) через меню пуск на рестарт, выключение, завершения сеанса или смена пользователя во время выполнения архивации. Только блокировка. »
Для этого предназначены logoff/shutdown-скрипты (только увеличьте им максимально допустимое время выполнения с умолчальных 10/15 минут). А нажать он может и на Reset, и на кнопку на сетевом фильтре.

Цитата macF:
Ручками вот это работает … далее обновить групповую политику для приминения изменений»
А теперь представьте, что произошёл некий йок во время этого процесса. То-то радости будет. Не делайте так.

Отправлено: 05:38, 22-03-2019 | #6


Новый участник


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

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


Код: Выделить весь код
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName 

Set objWMIService = GetObject( "winmgmts:\\.\root\cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem" )
For Each objItem in colItems
    strUserName = objItem.UserName
    'WScript.Echo "User Name: " & strUserName  
Next

i_1 = len(strUserName) 
i_2 = InStr(1,strUserName,"\",vbTextCompare)
i_3 = i_1 - i_2
strUserName = Right(strUserName, i_3) 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set objAccount = objWMIService.Get("Win32_UserAccount.Name='" & strUsername & "',Domain='" & strComputer & "'") 
getSID = objAccount.SID
MsgBox getSID

Последний раз редактировалось macF, 14-05-2019 в 10:30.


Отправлено: 06:47, 26-04-2019 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Проблемы с определением SID пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Как увидеть в HKU SID другого пользователя? Andrei_IW Microsoft Windows 7 3 21-08-2015 16:38
CMD/BAT - Как определить SID пользователя который указан в iec Andrei_IW Скриптовые языки администрирования Windows 6 21-08-2015 15:58
CMD/BAT - [решено] Как увидеть в HKU SID другого пользователя Andrei_IW Скриптовые языки администрирования Windows 2 21-08-2015 14:33
[решено] Получить SID пользователя support23 AutoIt 9 31-05-2013 15:48
VBS/WSH/JS - JS код - должен выдавать SID пользователя RRRinat Скриптовые языки администрирования Windows 3 21-10-2012 19:11




 
Переход