Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как определить SID пользователя который указан в iec (http://forum.oszone.net/showthread.php?t=304288)

Andrei_IW 21-08-2015 11:56 2544287

Как определить SID пользователя который указан в iec
 
Собственно, требуется узнать SID пользователя который указан в iec. Как это можно сделать сделать?

Andrei_IW 21-08-2015 12:02 2544289

Видел на одном форуме пишут способ

Код:

@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 2544298

Цитата:

Цитата Andrei_IW
который указан в iec »

Что такое «iec»?!

Цитата:

Цитата Andrei_IW
И ответ ужасный »

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

Цитата:

Цитата Andrei_IW
мне нужно определить SID пользователя русской учётной записи. »

Код:

wmic.exe UserAccount where "Name='Администратор'" get SID

Elven 21-08-2015 12:14 2544301

Цитата:

Цитата Andrei_IW
Теперь bat файл сохраняю не в UFT-8 а в ANCI »

866
По остальному даже не знаю что сказать, вроде все хорошо.

Andrei_IW 21-08-2015 12:19 2544303

Подскажите, в простом блокноте что является из ниже перечисленного UTF-8 с BOM
Код:

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


Iska 21-08-2015 12:48 2544319

Цитата:

Цитата Andrei_IW
Подскажите, в простом блокноте что является из ниже перечисленного UTF-8 с BOM »

Вот это: «UTF-8». BOM, очевидно, добавляется автоматически Блокнотом.

Для редактирования пакетных файлов лучше использовать Bred2/Bred3, AkelPad, Notepad++. Я лично использую встроенный редактор Far Manager'а:
Скрытый текст

Говорят, что под Windows 8 в Блокнот таки добавили OEM. Я лично не проверял.

mwz 21-08-2015 15:58 2544399

Andrei_IW, как вариант – утилита от Руссиновича PsGetSid.


Время: 00:19.

Время: 00:19.
© OSzone.net 2001-