|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Проблемы с определением SID пользователя |
|
VBS/WSH/JS - Проблемы с определением SID пользователя
|
Новый участник Сообщения: 4 |
Профиль | Отправить 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 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Это плохая идея: пользователь вообще может быть не залогинен. А может быть залогинено несколько пользователей.
|
Отправлено: 11:02, 21-03-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата macF:
Можно оформить в виде функции... Для 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 * |
|
------- Отправлено: 12:34, 21-03-2019 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать macF, проблема в том, что Вы что-то делаете не так. Не работайте с HKU. Работайте с HKCU из logon-скриптов. С HKLM работайте из startup-скриптов. Не должно быть никаких:
Цитата macF:
|
|
Отправлено: 23:24, 21-03-2019 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата:
Сценарий запускается штатно из планировщика с правами админа при входе любого пользователя и задержкой 1 минута. За АРМ всегда работает только один юзер. Смена пользователя не активна. Цитата:
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" 'Выбрать блокировку в меню пуск по умолчанию RegShell.RegWrite "HKEY_USERS\"&getSID&"\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_PowerButtonAction", "200", "REG_DWORD" Я бы в этот раздел HKU просто так и не лез бы. Может Вы знаете как это реализовать в HKLM или HKCU ? Я ничего рабочего для себя так и не нашел. Через gpedit.msc тема таже. Разница только в том что там два параметра и тот же HKU. |
|||
Отправлено: 02:46, 22-03-2019 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата macF:
Цитата macF:
Цитата macF:
|
||||
Отправлено: 05:38, 22-03-2019 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Как увидеть в 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 |
|