Windowsでは、ユーザーアカウント名は、コントロールパネルから変更された後のユーザープロファイル名とは異なります。
変更されたユーザーアカウント名から元のユーザープロファイル名を見つける方法は?
Windowsでは、ユーザーアカウント名は、コントロールパネルから変更された後のユーザープロファイル名とは異なります。
変更されたユーザーアカウント名から元のユーザープロファイル名を見つける方法は?
回答:
各アカウントには「名前」プロパティが2つあるので、混乱しないように少し説明します。1つはSAM(Security Account Manager)アカウント名で、の出力に表示されますnet user
。低レベルのOSコンポーネントに関する限り、これはアカウントの名前です。もう1つは表示名で、コントロールパネルの[ユーザーアカウント]ページと[スタート]メニューに表示されます。MMCのローカルユーザーとグループスナップイン(lusrmgr.msc
)には、[名前]列にSAM名、[フルネーム]列に表示名の両方が表示されます。SAM名は、プロファイルフォルダーの作成に使用される名前です。
このMMCスナップインを使用しない限り、SAM名を変更するのは簡単ではありません。SAM名の変更のみがイベント4781を生成します。ログにイベント4781が表示されない場合、表示名のみが変更されたと思います。これは、イベント4738のみを生成します(「ユーザーアカウントが変更されました」)。イベント4738は、古い値ではなく、表示名の新しい値のみを一覧表示します。表示名の履歴はどこにも保持されていないと思われます(4738のより多くのインスタンスのログを掘り下げることをお勧めします)。
幸い、表示名からプロファイルパスを見つけるのはそれほど難しくありません。PowerShellを開き、次のコマンドを入力します。
gwmi win32_useraccount
次のようなエントリがたくさん表示されます。
AccountType : 512
Caption : <redacted>\tester
Domain : <redacted>
SID : S-1-5-21-<redacted>-1018
FullName : Test Account
Name : tester
FullName
アカウントの表示名が表示されているものを見つけます。次に、SID
値を確認します(ここでマシンのSIDを編集しました)。レジストリを開き、harrymcによって言及されたキーに移動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
見つかったSIDと同じ名前のサブキーを開きます。このProfileImagePath
値は、プロファイルフォルダーへのパスを保持します。
Get-LocalUser
Windows 7バージョンのPowerShellにはコマンドレットが存在しないようです。(Windows 10でテストしました。)Windows 7でも動作するように回答を編集しました。
WindowsセキュリティシステムのイベントログでイベントID 4781を探します。アカウントの名前が変更されました:
4781:アカウントの名前が変更されました
件名:で識別されたユーザーが、ターゲットアカウント:で識別されたユーザーの通常のログオン名またはWin2k以前のログオン名を変更しました。イベント4738は、実際にはこの変更に関するより良い情報を提供します。
このイベントは、ローカルのSAMアカウントとドメインアカウントの両方でログに記録されます。
また、同じ情報を通知するイベントID 4738も表示されます。
件名:
アクションを実行したユーザーとログオンセッション。
- セキュリティID:アカウントのSID。
- アカウント名:アカウントのログオン名。
- アカウントドメイン:ドメイン、またはローカルアカウントの場合はコンピューター名。
- ログオンIDは、ログオンセッションを識別する半一意(再起動間で一意)の番号です。ログオンIDを使用すると、同じログオンセッション中に記録された他のイベントと同様に、ログオンイベント(4624)に逆相関させることができます。
対象アカウント:
- セキュリティID:アカウントのSID
- アカウント名:アカウントの名前
- アカウントドメイン:アカウントのドメイン
- 古いアカウント名:古いログオン名
- 新しいアカウント名:新しいログオン名
この回答は、ユーザーアカウントの名前を変更してもプロファイルパスが自動的に変更されないという事実に基づいています。
アカウントの名前は変更されたが、プロファイルパスが変更されなかった場合、パス名は、レジストリの値がとなる
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
という名前の項目の下
にあります。ProfileImagePath
C:\Users\old-user-name
マークされたSIDを現在のユーザーアカウント名に変換するには、cmdに次のコマンドを入力します。
wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name
net user
古いユーザー名もリストされていませんか?わかりました、ユーザー名がたくさんある場合、それを理解することはまだ困難ですが、PCでは通常そうではありません。
wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name
です。
Get-LocalUser : The term 'Get-LocalUser' is not recognized as the name of a cmdlet....