Показать полную графическую версию : [решено] автоматическое определение Id пользователя реестр
доброго времени! подскажите скрипт,который бы автоматически определял бы id данного пользователя в реестр. Этот ключ представляет собой ссылку на ключ HKEY_ USERS\user_ SID, где user SID — идентификатор безопасности (Security ID) пользователя, зарегистрированного в системе на текущий момент. у каждого пользователя он разный ,мне надо так что бы он автоматически номер определял. там что то вроде (6-555-21-4657646-57754-500) пример,я не за компьютером по этому точно написать не могу номер,но помню что он разный. помогите решить вопрос
Foreigner
14-10-2012, 22:27
O L E G,
Для текущего пользователя:
@echo off
setlocal
set "exec=wmic useraccount where name="%username%" get sid /value"
for /f %%i in (' "%exec%" ') do 1>nul set "%%i"
echo %sid%
Спс огромное, то что надо!
saveandrey
03-12-2012, 18:38
Что то у меня долго определяет sid, несколько минут, можно как-нибудь это ускорить для локального пользователя.
Petya V4sechkin
03-12-2012, 19:51
saveandrey, а так?
@echo off
for /f "usebackq tokens=1* delims==" %%i in (`wmic.exe useraccount where "localaccount = true and name = '%username%'" get sid /value ^| find.exe "="`) do set sid=%%j
set sid=%sid:~0,-1%
echo %sid%
Можно:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
`wmic.exe useraccount where "LocalAccount='True' and Name='%username%'" get SID /value ^|find.exe /i "SID"`
) do set "s%%i"
if defined sSID echo SID=%sSID%
endlocal
exit /b 0
NB! Не ниже Windows XP.
saveandrey
04-12-2012, 20:32
Попробовал эти два варианта, всё равно долго висят и обрезают последние цифры sid, только потом выдаётся результат, в чём причина не знаю.
Petya V4sechkin
04-12-2012, 22:02
PsGetSid (http://technet.microsoft.com/en-us/sysinternals/bb897417)
saveandrey
04-12-2012, 23:08
Petya V4sechkin, так не идёт
saveandrey
04-12-2012, 23:24
Petya V4sechkin, psgetsid пробовал, работает быстро, но мне необходимо получить %sid%
Petya V4sechkin, заметил, что psgetsid урезает sid в конце
Iska, так тоже не идёт
saveandrey, что у Вас вообще:
wmic.exe useraccount where "LocalAccount='True' and Name='%username%'" get Name, LocalAccount, SID /value
выдаёт?
saveandrey
05-12-2012, 06:55
Iska, после запуска этого висит пять минут и выдаёт
LocalAccount=TRUE
Name=al
SID=S-1-5-21-484763869-1343024091-682003330-1003
Но это не полный sid, вконце ещё 7, почему то отрезана.
Petya V4sechkin
05-12-2012, 07:27
psgetsid урезает sid в конце
Но это не полный sid, вконце ещё 7, почему то отрезана
Никто ничего не отрезает, нет там никакой 7 в конце.
psgetsid пробовал, работает быстро, но мне необходимо получить %sid%
@echo off
reg.exe add HKCU\Software\Sysinternals\PsGetSid /v EulaAccepted /t REG_DWORD /d 1 /f >nul
for /f %%i in ('psgetsid.exe %username% 2^>nul') do set sid=%%i
echo %sid%
saveandrey, не знаю как у тебя, но вариантPetya V4sechkin, работает! и быстрее, на XP. 7 ку не пробовал
saveandrey
06-12-2012, 10:02
Никто ничего не отрезает, нет там никакой 7 в конце. »
ну как же нет, смотрю в реестре она есть, а после выполения этих команд в результате её нет.
saveandrey, не знаю как у тебя, но вариантPetya V4sechkin, работает! и быстрее, на XP. 7 ку не пробовал »
ну если только глюк на эксперементальном компьютере...
Petya V4sechkin
06-12-2012, 10:04
смотрю в реестре она есть
Куда смотрите?
saveandrey
06-12-2012, 10:06
LocalAccount=TRUE
Name=al
SID=S-1-5-21-484763869-1343024091-682003330-1003 »
А смотрю в реестре там S-1-5-21-484763869-1343024091-682003330-10037 , что за глюк?
Куда смотрите? »
HKU\S-1-5-21-484763869-1343024091-682003330-10037
El Sanchez
06-12-2012, 18:50
А смотрю в реестре там S-1-5-21-484763869-1343024091-682003330-10037 , что за глюк? »
saveandrey, нужно здесь (http://support.microsoft.com/kb/154599) смотреть.
SetLocal
CHCP 1251 >nul
For /F "Tokens=*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do (
CHCP 866 >nul
For /F "Tokens=2*" %%B In ('Reg Query "%%A" /s^|Find /i "ProfileImagePath"') Do If "%USERNAME%"=="%%~nC" Echo:%%~nA
)
saveandrey
07-12-2012, 08:46
нужно здесь смотреть. »
И здесь посмотрел тоже S-1-5-21-484763869-1343024091-682003330-10037
Может ещё кто подскажет как определить ID сетевого адаптера, который прописывается в реестре?
SetLocal
CHCP 1251 >nul
For /F "Tokens=*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do (
CHCP 866 >nul
For /F "Tokens=2*" %%B In ('Reg Query "%%A" /s^|Find /i "ProfileImagePath"') Do If "%USERNAME%"=="%%~nC" Echo:%%~nA
) »
Это работает быстро и полностью выводит sid'ы, но только мне нужен sid текущего пользователя
и полностью выводит sid'ы, но только мне нужен sid текущего пользователя »
Да ну?! А у меня — только текущего. Добавьте «@echo off» первой строкой пакетного файла.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC