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

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

O L E G 14-10-2012 22:03 2005365

автоматическое определение Id пользователя реестр
 
доброго времени! подскажите скрипт,который бы автоматически определял бы id данного пользователя в реестр. Этот ключ представляет собой ссылку на ключ HKEY_ USERS\user_ SID, где user SID — идентификатор безопасности (Security ID) пользователя, зарегистрированного в системе на текущий момент. у каждого пользователя он разный ,мне надо так что бы он автоматически номер определял. там что то вроде (6-555-21-4657646-57754-500) пример,я не за компьютером по этому точно написать не могу номер,но помню что он разный. помогите решить вопрос

Foreigner 14-10-2012 22:27 2005393

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 2005562

Спс огромное, то что надо!

saveandrey 03-12-2012 18:38 2037941

Что то у меня долго определяет sid, несколько минут, можно как-нибудь это ускорить для локального пользователя.

Petya V4sechkin 03-12-2012 19:51 2037991

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 2037992

Можно:
Код:

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

Попробовал эти два варианта, всё равно долго висят и обрезают последние цифры sid, только потом выдаётся результат, в чём причина не знаю.

Petya V4sechkin 04-12-2012 22:02 2038747

PsGetSid

saveandrey 04-12-2012 23:08 2038809

Petya V4sechkin, так не идёт

saveandrey 04-12-2012 23:24 2038813

Petya V4sechkin, psgetsid пробовал, работает быстро, но мне необходимо получить %sid%

Petya V4sechkin, заметил, что psgetsid урезает sid в конце

Iska, так тоже не идёт

Iska 05-12-2012 00:54 2038875

saveandrey, что у Вас вообще:
Код:

wmic.exe useraccount where "LocalAccount='True' and Name='%username%'" get Name, LocalAccount, SID /value
выдаёт?

saveandrey 05-12-2012 06:55 2038935

Iska, после запуска этого висит пять минут и выдаёт

LocalAccount=TRUE
Name=al
SID=S-1-5-21-484763869-1343024091-682003330-1003

Но это не полный sid, вконце ещё 7, почему то отрезана.

Petya V4sechkin 05-12-2012 07:27 2038948

Цитата:

Цитата saveandrey
psgetsid урезает sid в конце

Цитата:

Цитата saveandrey
Но это не полный sid, вконце ещё 7, почему то отрезана

Никто ничего не отрезает, нет там никакой 7 в конце.

Цитата:

Цитата saveandrey
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 2039132

saveandrey, не знаю как у тебя, но вариантPetya V4sechkin, работает! и быстрее, на XP. 7 ку не пробовал

saveandrey 06-12-2012 10:02 2039681

Цитата:

Цитата Petya V4sechkin
Никто ничего не отрезает, нет там никакой 7 в конце. »

ну как же нет, смотрю в реестре она есть, а после выполения этих команд в результате её нет.

Цитата:

Цитата O L E G
saveandrey, не знаю как у тебя, но вариантPetya V4sechkin, работает! и быстрее, на XP. 7 ку не пробовал »

ну если только глюк на эксперементальном компьютере...

Petya V4sechkin 06-12-2012 10:04 2039684

Цитата:

Цитата saveandrey
смотрю в реестре она есть

Куда смотрите?

saveandrey 06-12-2012 10:06 2039686

Цитата:

Цитата saveandrey
LocalAccount=TRUE
Name=al
SID=S-1-5-21-484763869-1343024091-682003330-1003 »

А смотрю в реестре там S-1-5-21-484763869-1343024091-682003330-10037 , что за глюк?

Цитата:

Цитата Petya V4sechkin
Куда смотрите? »

HKU\S-1-5-21-484763869-1343024091-682003330-10037

El Sanchez 06-12-2012 18:50 2040102

Цитата:

Цитата saveandrey
А смотрю в реестре там S-1-5-21-484763869-1343024091-682003330-10037 , что за глюк? »

saveandrey, нужно здесь смотреть.
Код:

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 2040470

Цитата:

Цитата El Sanchez
нужно здесь смотреть. »

И здесь посмотрел тоже S-1-5-21-484763869-1343024091-682003330-10037

Может ещё кто подскажет как определить ID сетевого адаптера, который прописывается в реестре?

Цитата:

Цитата El Sanchez
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 2040493

Цитата:

Цитата saveandrey
и полностью выводит sid'ы, но только мне нужен sid текущего пользователя »

Да ну?! А у меня — только текущего. Добавьте «@echo off» первой строкой пакетного файла.

saveandrey 08-12-2012 09:03 2041133

Не подскажете как определить ID сетевого адаптера, который прописывается в реестре?

saveandrey 08-12-2012 22:53 2041514

Цитата:

Цитата Iska
Добавьте «@echo off» первой строкой пакетного файла. »

Отлично работает! То что мне надо! Не заставляет себя ждать. Благодарю.

Код:

@echo off
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
)


O L E G 10-12-2012 11:04 2042283

saveandrey, покажи скрин с реестра, своего ID пользователя
на моём примере видно...

saveandrey 11-12-2012 08:08 2042876

Вложений: 1
O L E G, вот

O L E G 12-12-2012 08:49 2043667

saveandrey, ну да, на скрин видно что 7 в конце. проблема решена, все определяется?

saveandrey 13-12-2012 07:11 2044405

O L E G, да, но последний вариант действует не на всех компьютерах (везде Windows XP SP3)

O L E G 14-12-2012 13:18 2045176

а для Win 7 подскажите?)


Время: 09:00.

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