SID หรือ Security Identifier คือรหัสเฉพาะที่ช่วยระบุ User, Group และ Computer Accounts ทั่ว Windows OS ถูกสร้างทันทีที่สร้าง User Account และเป็น Unique Identifiers ไม่มี SID ใดเหมือนกันบนคอมพิวเตอร์เครื่องเดียวกัน เรียกอีกอย่างว่า Security ID Unique Identification นี้ใช้ภายใน OS แทน Display Names ที่เราตั้ง เช่น Personal, Dad หรืออื่นๆ หมายความว่า แม้คุณเปลี่ยน Display Name ไป ก็ไม่ส่งผลต่อ Config ใดๆ ที่ตั้งไว้สำหรับ Account นั้น เพราะทุก Config ผูกกับ SID ที่คงที่แม้คุณเปลี่ยน Display Name หรือ Username
SID สำคัญต่อระบบ เพราะทุก User Accounts ผูกกับ Alphanumeric String ที่เปลี่ยนไม่ได้ การเปลี่ยน Username ไม่ส่งผลต่อการเข้าถึง System Resources และหากลบ Username แล้วภายหลังใครสร้าง Account ชื่อเดิม ไม่สามารถเข้าถึง Resources ได้ เพราะ SIDs Unique ต่อ Username ทุกตัว ในกรณีนี้ SID ไม่เหมือนกัน
มา看看วิธี Find Security Identifier (SID) ของ User ใดๆ ใน Windows 10
หา Security Identifier (SID) ของ User ใดๆ ใน Windows 10
1] ใช้ WMIC
หา SID ของ User ง่ายมาก ใช้ Windows Management Instrumentation Command Line (WMIC)
เริ่มด้วยการเปิด Command Prompt ค้นหา Command Prompt ใน Cortana Search Box หรือถ้าใช้ Windows 8 หรือใหม่กว่า กด WINKEY + X เลือก Command Prompt (Admin)
พิมพ์คำสั่ง:
wmic useraccount get name,sid
กด Enter
จะได้ผลลัพธ์ดังภาพ จะได้ User Account พร้อม SID

Filter SID สำหรับ User ที่ต้องการ
คนที่คุ้นเคย SQL Queries อาจเกี่ยวข้อง แต่คำสั่งนี้ช่วยได้ SID ของ User เฉพาะ และประหยัดเวลา มากที่สุดเมื่อ Server ใหญ่มี Multiple Users ล็อกอินพร้อมกัน แต่ทำงานได้ก็ต่อเมื่อคุณรู้ Username
คำสั่งที่ใช้:
wmic useraccount where name="USER" get sid
แทนที่ USER ด้วย Username จริงในเครื่องหมายคำพูด
เช่น:
wmic useraccount where name="Ayush" get sid
หาก Error ลองเปลี่ยน Path เป็น C:\Windows|System32|wbem แทน C:\Windows\System32\
ผลลัพธ์จะประมาณนี้:

2] ใช้ Whoami
หา SID ของ Current User ด้วย CMD หรือ PowerShell
เปิด PowerShell/CMD พิมพ์คำสั่ง:

whoami /user
กด Enter
อีกวิธีหา SID ของ Current User ใช้ wmic useraccount ด้านล่าง
เปิด PowerShell/CMD พิมพ์คำสั่ง:

wmic useraccount where name='%username%' get domain,name,sid
กด Enter
หา SID ของ All Users ด้วย CMD หรือ PowerShell
เปิด Command Prompt/PowerShell พิมพ์คำสั่ง:

wmic useraccount get domain,name,sid
กด Enter
หา SID ของ Specific User ด้วย Command Prompt หรือ PowerShell
เปิด Command Prompt/PowerShell พิมพ์คำสั่ง:
wmic useraccount where name='username' get sid
ใส่ ชื่อจริง ของ User แทน username ในคำสั่ง
กด Enter

หา Username จาก SID ด้วย Command Prompt หรือ PowerShell
เปิด Command Prompt/PowerShell พิมพ์คำสั่ง:

wmic useraccount where sid='' get domain,name
ใส่ ค่า SID จริง แทน <sid> ในคำสั่ง
กด Enter
3] ใช้ PowerShell
อีกวิธีหา SID ของ All Users ใช้คำสั่ง Get-WmiObject ใน PowerShell
เปิด PowerShell พิมพ์คำสั่ง:

Get-WmiObject win32_useraccount | Select domain,name,sid
กด Enter
4] ใช้ Registry Editor
เริ่มด้วยการเปิด Registry Editor ค้นหาใน Cortana Search Box หรือ กด WINKEY + R พิมพ์ regedit กด Enter
เปิด Registry Editor แล้ว ไปที่ Path นี้:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
ในค่า ProfileImagePath สำหรับแต่ละ SID ภายใต้โฟลเดอร์ ProfileList คุณจะหา SID ที่ต้องการและรายละเอียดอื่นๆ เช่น Usernames หน้าจะคล้ายภาพ:

สังเกตว่าวิธีนี้หา SIDs ของ Users ที่ล็อกอินอยู่ในคอมพิวเตอร์ได้เท่านั้น อาจเป็น Remote Access หรือ Account ล็อกอินอยู่แล้ว Switch มา User อื่น วิธีนี้มีข้อจำกัดนี้ แต่ Method 1 WMIC ไม่มีปัญหานี้
การระบุ SIDs
SID รูปแบบ S-1-0-0 เรียกว่า Null SID มอบหมายเมื่อค่า SID ไม่ทราบ หรือมอบหมายให้ Group ไม่มี Member
SID รูปแบบ S-1-1-0 เรียกว่า World SID มอบหมายให้ Group ทุก User
SID รูปแบบ S-1-2-0 เรียกว่า Local SID มอบหมายให้ User ที่ล็อกอินจาก Local Terminal
เรียนรู้เพิ่มเติมเกี่ยว System Identifiers ที่ Microsoft Developer Network
With inputs from Pavithra Bhat
