Windows 11/10 で任意のユーザーのセキュリティ識別子 (SID) を見つける方法

SIDまたはセキュリティ識別子は、Windows オペレーティングシステム全体でユーザーやグループ、コンピューターアカウントを識別するのに役立つ固有のコードです。これらはユーザーアカウントが作成されるとすぐに作成され、一意の識別子であるため、共通のコンピューター上で 2 つの SID が同じになることはありません。セキュリティ IDとも呼ばれます。この一意の識別は、パーソナル、お父さん、その他の設定した表示名を表示する代わりに、オペレーティングシステム内で内部的に使用されます。つまり、表示名を変更しても、すべての構成が SID に結び付けられているため、そのアカウントに対して事前構成された設定には影響しません。表示名やユーザー名を変更しても SID は変わりません。

SID は、すべてのユーザーアカウントに変更不可能な英数字文字列が関連付けられているため、システムにとって非常に重要です。ユーザー名の変更は、システムリソースに対するユーザーのアクセスに影響しません。ユーザー名を削除して、後で誰かが古いユーザー名でアカウントを作成しようとしても、SID は常に各ユーザー名に固有であるため、リソースへのアクセスを取り戻すことはできません。この場合は同じではありません。

Windows 11/10 で任意のユーザーのセキュリティ識別子 (SID) を見つける

Windows 11/10 で任意のユーザーのセキュリティ識別子 (SID) を見つける方法について説明します。

1] WMIC を使用する

ユーザーの SID またはセキュリティ識別子を見つけるのはとても簡単です。これを行うには、Windows 管理インストルメンテーションコマンドライン (WMIC) を使用する必要があります。

まず、コマンドプロンプトを開きます。Cortana 検索ボックスでコマンドプロンプトを検索して開くことができます。または、Windows 8 以降を使用している場合は、WINKEY + X ボタンの組み合わせを押してスタートボタンにコンテキストメニューを起動し、コマンドプロンプト (管理者)をクリックします。

次に、次のコマンドを入力します。

wmic useraccount get name,sid

次に、Enter キーを押します。

これで、次の画面スニペットのような結果が表示されます。同じ SID のユーザーアカウントが表示されます。

目的のユーザーの SID をフィルタリングする

SQL クエリを使用することに慣れている読者は、これに関連付けられるかもしれません。しかし、このコマンドはユーザーが特定のユーザーの SID を取得し、面倒な作業をすべて無視するのに役立ちます。これは、サーバーなどの大規模システムに複数のユーザーが同時にログインして使用している場合に非常に便利です。このコマンドは時間を大幅に節約できます。ただし、ユーザーのユーザー名がわかっている場合にのみ機能します。

次に、使用するコマンドは次のとおりです。

wmic useraccount where name="USER" get sid

ここで、USER を上のコマンドの引用符内のユーザーの実際のユーザー名に置き換える必要があります。

たとえば、次のようになります。

wmic useraccount where name="Ayush" get sid

上のコマンドを使用中にエラーが発生した場合は、パスを C:\Windows\System32 の代わりに C:\Windows|System32|wbem に変更してみてください。

上記のコマンドの結果は次のようになります。

2] Whoami を使用する

コマンドプロンプトまたは PowerShell を使用して現在のユーザーの SID を見つける

PowerShell/CMD ウィンドウを開き、次のコマンドを入力します。

whoami/user

Enter キーを押します。

現在のユーザーの SID を見つけるもう 1 つの方法は、次のように wmic useraccount コマンドを使用することです。

PowerShell/CMD ウィンドウを開き、次のコマンドを入力します。

wmic useraccount where name='%username%' get domain,name,sid

Enter キーを押します。

コマンドプロンプトまたは PowerShell を使用してすべてのユーザーの SID を見つける

コマンドプロンプト/PowerShell ウィンドウを開き、次のコマンドを入力します。

wmic useraccount get domain,name,sid

Enter キーを押します。

CommandPrompt または PowerShell を使用して特定のユーザーの SID を見つける

コマンドプロンプト/PowerShell を開き、次のコマンドを入力します。

wmic useraccount where name='username' get sid

上のコマンドで username の代わりにユーザーの実際の名前を入力します。

Enter キーを押します。

コマンドプロンプトまたは PowerShell を使用して SID のユーザー名を見つける

コマンドプロンプト/PowerShell を開き、次のコマンドを入力します。

wmic useraccount where sid='<sid>' get domain,name

上のコマンドで の代わりに実際の SID 値を入力します。

Enter キーを押します。

3] PowerShell を使用する

PowerShell で Get-WmiObject コマンドを使用して、すべてのユーザーの SID を見つけることもできます。

PowerShell を開き、次のコマンドを入力します。

Get-WmiObject win32_useraccount | Select domain,name,sid

Enter キーを押します。

4] レジストリエディターを使用する

ここでは、まずレジストリエディターを開きます。Cortana 検索ボックスで検索するか、WINKEY + R の組み合わせを押してスタートを起動し、「regedit」と入力してEnter キーを押します。

レジストリエディターが開いたら、次のパスに移動します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

次に、ProfileList フォルダ内の各 SID の ProfileImagePath 値に、目的の SID とユーザー名などの他の詳細を見つけることができます。ページは、次のスクリーンショットのようなものになります。

コンピューターにすでにログインしているユーザーの SID を見つけることができることに注意してください。リモートからアカウントにアクセスするか、アカウントにログインしてから、このアクティビティが実行されている別のユーザーに切り替える必要があります。これがこの方法の唯一の欠点ですが、WMIC を使用するメソッド 1 では、まったく問題ありません。

SID の識別

S-1-0-0 の形式の SID は、Null SID と呼ばれます。値が不明な場合、またはメンバーがいないグループに割り当てられた場合に、SID に割り当てられます。

また、S-1-1-0 の形式の SID は、World SID です。すべてのユーザーのグループに割り当てられます。

最後に、S-1-2-0 の形式の SID は、ローカル SID と呼ばれます。ローカルターミナルからログインする必要があるユーザーに割り当てられます。

これらのシステム識別子について詳しくは、Microsoft Developer Network でご覧いただけます。

Pavithra Bhat の入力による