PDA

Показать полную графическую версию : [решено] автоматическое определение Id пользователя реестр


Страниц : [1] 2

O L E G
14-10-2012, 22:03
доброго времени! подскажите скрипт,который бы автоматически определял бы 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%

O L E G
15-10-2012, 09:03
Спс огромное, то что надо!

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%

Iska
03-12-2012, 19:52
Можно:
@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, так тоже не идёт

Iska
05-12-2012, 00:54
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%

O L E G
05-12-2012, 13:40
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 текущего пользователя

Iska
07-12-2012, 10:12
и полностью выводит sid'ы, но только мне нужен sid текущего пользователя »
Да ну?! А у меня — только текущего. Добавьте «@echo off» первой строкой пакетного файла.




© OSzone.net 2001-2012