PDA

Показать полную графическую версию : Как определить SID пользователя который указан в iec


Andrei_IW
21-08-2015, 11:56
Собственно, требуется узнать SID пользователя который указан в iec. Как это можно сделать сделать?

Andrei_IW
21-08-2015, 12:02
Видел на одном форуме пишут способ


@echo off &setlocal

set "RegPath=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList"
for /f "delims=" %%i in ('reg query "%RegPath%"^|findstr /ibc:"%RegPath%\S-"') do (
reg query "%%i" /v "ProfileImagePath"|findstr /iec:"%UserProfile%" >nul &&set "SID=%%~nxi"
)

echo %SID%
pause
И здесь выводиться моя запись. Однако есть проблема, мне нужно определить SID пользователя русской учётной записи. Делаю так


@echo off &setlocal

set "RegPath=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList"
for /f "delims=" %%i in ('reg query "%RegPath%"^|findstr /ibc:"%RegPath%\S-"') do (
reg query "%%i" /v "ProfileImagePath"|findstr /iec:"Вася" >nul &&set "SID=%%~nxi"
)
echo %SID%
pause

И ответ ужасный



C:\Windows\system32>я╗┐@echo off & setlocal
"я╗┐@echo" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\Windows\system32>set "RegPath=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows N
T\CurrentVersion\ProfileList"

C:\Windows\system32>for /F "delims=" %i in ('reg query "HKEY_LOCAL_MACHINE\Softw
are\Microsoft\Windows NT\CurrentVersion\ProfileList"|findstr /ibc:"HKEY_LOCAL_MA
CHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-"') do (reg que
ry "%i" /v "ProfileImagePath" | findstr /iec:"╨Ф╨╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && s
et "SID=%~nxi" )

C:\Windows\system32>(reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT
\CurrentVersion\ProfileList\S-1-5-18" /v "ProfileImagePath" | findstr /iec:"╨Ф╨
╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && set "SID=S-1-5-18" )

C:\Windows\system32>(reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT
\CurrentVersion\ProfileList\S-1-5-19" /v "ProfileImagePath" | findstr /iec:"╨Ф╨
╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && set "SID=S-1-5-19" )

C:\Windows\system32>(reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT
\CurrentVersion\ProfileList\S-1-5-20" /v "ProfileImagePath" | findstr /iec:"╨Ф╨
╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && set "SID=S-1-5-20" )

C:\Windows\system32>(reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT
\CurrentVersion\ProfileList\S-1-5-21-838063562-3551232986-1455341853-1001" /v "P
rofileImagePath" | findstr /iec:"╨Ф╨╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && set "SID=S-1-5
-21-838063562-3551232986-1455341853-1001" )

C:\Windows\system32>(reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT
\CurrentVersion\ProfileList\S-1-5-21-838063562-3551232986-1455341853-1002" /v "P
rofileImagePath" | findstr /iec:"╨Ф╨╕╤Б╨┐╨╡╤В╤З╨╡╤А" 1>nul && set "SID=S-1-5
-21-838063562-3551232986-1455341853-1002" )

C:\Windows\system32>echo
Режим вывода команд на экран (ECHO) включен.

C:\Windows\system32>pause
Для продолжения нажмите любую клавишу . . .
Хотя строка нужной учётной записи S-1-5-21-838063562-3551232986-1455341853-1002 пробегает. Ага, надо её как то вывести.

Теперь bat файл сохраняю не в UFT-8 а в ANCI и вот какой результат


Режим вывода команд на экран (ECHO) отключён.


Ладно, пробую кодировать файл в 866 с помощью Notepad ++. Теперь результат выводиться без ошибок, но вместо учётной записи S-1-5-21-838063562-3551232986-1455341853-1002 почему то определяется S-1-5-21-838063562-3551232986-1455341853-1001. О как. Не верно. И от куда только такая учётка могла взяться.

Хочу уточнить, почему bat файл написанный на разных кодировках имеет разный результат. Ну и собственно как вывести SID пользователя который указан в iec?

Iska
21-08-2015, 12:12
который указан в iec »
Что такое «iec»?!

И ответ ужасный »
Хотя бы не сохраняйте пакетный файл в UTF-8 с BOM (правильно — в OEM/866).

мне нужно определить SID пользователя русской учётной записи. »
wmic.exe UserAccount where "Name='Администратор'" get SID

Elven
21-08-2015, 12:14
Теперь bat файл сохраняю не в UFT-8 а в ANCI »
866
По остальному даже не знаю что сказать, вроде все хорошо.

Andrei_IW
21-08-2015, 12:19
Подскажите, в простом блокноте что является из ниже перечисленного UTF-8 с BOM

ANCI
Юникод
Юникод Big Endian
UTF-8

Iska
21-08-2015, 12:48
Подскажите, в простом блокноте что является из ниже перечисленного UTF-8 с BOM »
Вот это: «UTF-8». BOM (https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0 %B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2), очевидно, добавляется автоматически Блокнотом.

Для редактирования пакетных файлов лучше использовать Bred2/Bred3, AkelPad, Notepad++. Я лично использую встроенный редактор Far Manager'а:
http://img248.imageshack.us/img248/5456/image00120130607202637.png
Говорят (http://forum.oszone.net/post-2488112.html#post2488112), что под Windows 8 в Блокнот таки добавили OEM. Я лично не проверял.

mwz
21-08-2015, 15:58
Andrei_IW, как вариант – утилита от Руссиновича PsGetSid (https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx).




© OSzone.net 2001-2012