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

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