นี่คืออุปทานของฉัน: วิธีการ SID บน a สองวิธี คอมพิวเตอร์เฉพาะที่ XP และ Win7 ที่เพิ่ม ชื่อผู้ใช้ จากแหล่งที่แตกต่างกันสำหรับการตรวจสอบ
วิธีการทำงานของสคริปต์: ความคิดที่สำคัญออกมาจากความรู้ความเข้าใจว่า:
# 1 . กลุ่มผู้ใช้โปรไฟล์ ( HKEY_CURRENT_USER
, abbr HKCU
) ติดตั้งในรีจิสทรีเมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์และ HKCU
เป็นชื่อเล่น (นามแฝง) สำหรับเท่านั้น HKEY_USERS\<SID>
รีจิสตรีคีย์ที่ไหน <SID>
abbreviates ตัวระบุความปลอดภัย (SID) สำหรับบัญชีของผู้ใช้
# 2 . หนึ่งสามารถดูรายการของกลุ่มรีจิสทรีทั้งหมดที่มีอยู่ในปัจจุบันภายใต้ชื่อใด ๆ เป็นค่าในคีย์รีจิสทรีต่อไปนี้ ชื่อค่าที่นี่สร้างเส้นทางรีจิสทรีภายใน (และมี <SID>
สำหรับ subpath ภายใต้ HKEY_USERS
) และข้อมูลค่าเป็นเส้นทางไปยังไฟล์สนับสนุนกลุ่ม (และไฟล์สนับสนุนของผู้ใช้ปัจจุบันอยู่เสมอ ntuser.dat
): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
# 3 . สารบรรณของ ชื่อผู้ใช้ และ <SID>
สามารถพบได้โดย WMIC
.
# 3a . (สุจริตมีคีย์รีจิสทรีเช่นกัน แต่คีย์นี้ถูกละเว้นในสคริปต์สำหรับปัจจุบัน: สันนิษฐานว่าเป็น ทำ ) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
สั้น คำอธิบายขั้นตอน : สคริปต์ค้นหาการจับคู่ระหว่างสามแหล่งที่กล่าวถึงข้างต้นโดยสัจพจน์ # 1 และ # 3 เสมอกับรายการใน hivelist
รหัส (เปรียบเทียบ # 2 )
ลักษณะเอาต์พุตของสคริปต์มีลักษณะอย่างไรและ เกณฑ์การจับคู่
บทที่ 0 - . HKLM ... \ Winlogon เป็นค่าเริ่มต้น . ไม่มีการแสวงหา ก้องเท่านั้น %USERNAME%
ตัวแปรสภาพแวดล้อมและค่าบางอย่างที่เกี่ยวข้องกับผู้ใช้จากการติดตามรีจิสตรีคีย์: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
บทที่ 1 - . wmic SID = & gt; HKLM ... \ hivelist . แสวงหาทุกสิ่ง SID จาก WMIC
ข้อความค้นหา ( # 3 ) สำหรับการจับคู่ในชื่อค่าของ # 2 .
บทที่ 2 - . HKU SID = & gt; HKLM ... \ hivelist . แสวงหาทุกสิ่ง SID จาก HKEY_USERS\<SID>
( # 1 ) สำหรับการจับคู่ในชื่อค่าของ # 2 . ให้การจับคู่ในเชิงบวกที่ผิดพลาดสำหรับ <SID>_Classes
บทที่ 3 - . % USERNAME% = & gt; HKLM ... \ hivelist . แสวงหา %USERNAME%
สำหรับการจับคู่ในข้อมูลค่าของ # 2 . สามารถอัปเดตเพื่อค้นหาชื่อผู้ใช้ทุกคนของ # 3 แต่จับคู่โดย SID ถือว่าน่าเชื่อถือมากขึ้น
บทที่ 4 - . ProfileList SID = & gt; HKLM ... \ hivelist (ทำ) : แสวงหาทุกคน SID จาก ProfileList
รีจิสตรีคีย์ ( # 3a ) สำหรับการจับคู่ในชื่อค่าของ # 2 .
@ECHO OFF >NUL
@rem SETLOCAL enableextensions enabledelayedexpansion
@echo .
@echo . HKLM^\...^\Winlogon defaults:
@echo .
@echo UserName "%USERNAME%" ^(environment^)
call :regquery DefaultUserName " "
call :regquery DefaultDomainName " "
call :regquery AltDefaultUserName ""
call :regquery AltDefaultDomainName " "
@echo .
@echo . wmic SID =^> HKLM^\...^\hivelist:
@echo .
@echo user "%USERNAME%" ^(environment^)
@wmic USERACCOUNT GET name, sid >getvmic.txt
if EXIST getvmic.txt (
for /F "tokens=1,2" %%G in ('type getvmic.txt') do (
for /F "tokens=1,2*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" /v ^\REGISTRY^\USER^\%%H 2^>NUL ^| FIND /I "%%H"') do (
if "%%M"=="" (
@echo OFF >NUL
) else (
for /F "tokens=4* delims=^\" %%P in ("%%M") do (
@echo user "%%G" ^(wmic^)
@echo user "%%P" ^(hivelist^)
@echo SID "%%H" ^(wmic^)
for /F "tokens=3* delims=^\" %%S in ( "%%K") do @echo SID "%%S" ^(hivelist^)
) )
for /F "tokens=1,2* delims=^\" %%P in ('reg query ^"HKU^" 2^>NUL ^| FIND /I "%%H"') do (
If /I "%%Q"=="%%H" @echo SID "%%Q" ^(HKU^)
) ) ) )
@echo .
@echo . HKU SID =^> HKLM^\...^\hivelist:
@echo .
for /F "tokens=1,2* delims=^\" %%G in ('reg query ^"HKU^" 2^>NUL') do (
for /F "tokens=1,2*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" /v ^\REGISTRY^\USER^\%%H 2^>NUL ^| FIND /I "%%H"') do (
if "%%M"=="" (
@echo OFF >NUL
) else (
for /F "tokens=4* delims=^\" %%P in ("%%M") do (
if "%%P"=="%USERNAME%" (
@echo user "%USERNAME%" ^(environment^)
@echo user "%%P" ^(hivelist^)
if EXIST getvmic.txt (
for /F "tokens=1,2" %%W in ('type getvmic.txt ^| FIND /I "%%P"') do (
@echo user "%%W" ^(wmic^)
if "%%X"=="%%H" @echo SID "%%X" ^(wmic^)
) )
@echo SID "%%H" ^(HKU^)
for /F "tokens=3* delims=^\" %%S in ( "%%K") do @echo SID "%%S" ^(hivelist^)
) ) ) ) )
@echo .
@echo . %%USERNAME%% =^> HKLM^\...^\hivelist:
@echo .
@echo user "%USERNAME%" ^(environment^)
for /F "tokens=*" %%K in ('reg query ^"HKLM^\SYSTEM^\CurrentControlSet^\Control^\hivelist^" 2^>NUL ^| FIND /I "%USERNAME%" ^| FIND /I "ntuser.dat"') do (
for /F "tokens=1,3,7 delims=^\" %%L in ("%%K") do (
@echo user "%%N" ^(hivelist^)
for /F %%S in ("%%M") do (
for /F "tokens=1,2* delims=^\" %%T in ('reg query ^"HKU^" 2^>NUL ^| FIND /I "%%S"') do (
if /I "%%S"=="%%U" (
if EXIST getvmic.txt (
for /F "tokens=1,2" %%W in ('type getvmic.txt ^| FIND /I "%%U"') do (
@echo user "%%W" ^(wmic^)
@echo SID "%%X" ^(wmic^)
) )
@echo SID "%%U" ^(HKU^)
) )
@echo SID "%%S" ^(hivelist^)
) ) )
goto :eof
:regquery
for /F "tokens=1,3*" %%S in ('reg query ^"HKLM^\SOFTWARE^\Microsoft^\Windows NT^\CurrentVersion^\Winlogon^" /v %1 2^>NUL ^| FIND /I "%1"') do (
@echo %%S %~2 "%%T" ^(Winlogon^)
)
exit /B
หวังว่าจะสามารถใช้งานได้แม้ว่าฉันจะไม่ทราบว่าข้อมูลรับรองผู้ใช้ใด psexec
ทำงานภายใต้