1

Windows ユーザー アカウントを一覧表示したいのですが、ログイン画面で表示されるもの、Windows の起動後に表示されるもののみです。

私はグーグルで検索しましたが、見つけたのはすべてこの方法に要約されます: http://www.mydigitallife.info/how-to-create-hidden-user-account-hide-user-account-from-welcome-screen-in-windows/

ただし、私のコンピューターには、上記の記事で言及されているレジストリ キーはありません。作成したくありません。既に存在するものを確認したいのです。

次のクエリを使用します。

List<string> list = new List<string>();

SelectQuery query = new SelectQuery("Win32_UserAccount");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

foreach (ManagementObject obj in searcher.Get())
{
     if (isInteresting(obj))
     {
         list.Add(obj.GetPropertyValue("Name").ToString());
     }
}

上記のクエリによって返されるオブジェクトのプロパティを使用して、いくつかのアカウントをフィルタリングすることができました (これらのプロパティの完全なリスト: http://msdn.microsoft.com/en-us/library/windows/desktop/aa394507(v=vs. 85).aspx#properties )、しかし、日常のユーザーの観点からは、まだ不要なものがいくつかあります (ドライバー ベンダーが更新に使用するアカウントなど)。

4

1 に答える 1

1

ログオン画面にアカウントが表示されない理由は、レジストリ キーだけではありません。他にもいくつかあります:

  • アカウントが無効になっています
  • アカウントには対話型ログオン権限 (SeInteractiveLogonRight) がありません
  • アカウントは対話型ログオン権限を明示的に拒否されています (SeDenyInteractiveLogonRight)

通常、SeInteractiveLogonRight は、Guest ユーザーに加えて、Administrators、Users、および Backup Operators グループのメンバーに付与されます。これらのグループのメンバーではないアカウント (Guest 以外) は、おそらくログオン画面に表示されません。(これらのグループのいずれかから SeInteractiveLogonRight が削除された場合に何が起こるかはわかりませんが、ログオン画面にアカウントが表示されても驚かないでしょう。)

LsaEnumerateAccountRightsを使用して、アカウントに SeDenyInteractiveLogonRight が適用されているかどうかを確認するか、LsaEnumerateAccountsWithUserRightを使用して、影響を受けるアカウントのリストを取得できます。通常、この権限はグループではなく個々のアカウントに付与されるため、ログオン画面でこの方法でアカウントがチェックされる可能性があります。

于 2012-08-08T02:35:09.680 に答える