DOBON.NET DOBON.NETプログラミング掲示板過去ログ

他のユーザー名の取得について

環境/言語:[vb.net 2008]
分類:[.NET]

現在ログインしているユーザー(自分)のユーザー名は取得できますが、
現在ログインしている他のユーザー(バックグラウンド)はどうやれば
取得できるでしょうか?
また、アカウントすべてを取得するにはどうすればいいでしょうか?
ご教授願います。
■No26577に返信(sskさんの記事)
> 現在ログインしている他のユーザー(バックグラウンド)はどうやれば
> 取得できるでしょうか?

  http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200505/200505_05050060.html

  確かこれでいけたはず・・・

以上。参考まで
>http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200505/200505_05050060.html

ご返答ありがとうございます
上記ページにある
 [SystemInformation クラス]
  と
 [WindowsPrincipal.Identity プロパティ]
を試しましたが、自分のユーザー名をとることはできましたが、
他のユーザーを取得する方法はわかりませんでした。
できれば、もう少し詳しく教えていただければと思います。
■No26580に返信(sskさんの記事)
> を試しましたが、自分のユーザー名をとることはできましたが、
> 他のユーザーを取得する方法はわかりませんでした。

  OSは?
  Vista/Win7 なら、管理者権限で行ってみて下さい。

以上。
■No26582に返信(オショウさんの記事)
> ■No26580に返信(sskさんの記事)
>>を試しましたが、自分のユーザー名をとることはできましたが、
>>他のユーザーを取得する方法はわかりませんでした。
>
>   OSは?
>   Vista/Win7 なら、管理者権限で行ってみて下さい。
>
> 以上。

よくわからないのでもう少し勉強します
ありがとうごさいました。
解決済み!
「書き込みのルールについて」にありますように、解決していない場合は解決済みにしないでください。一度「書き込みのルールについて」をご確認いただけますように、お願いいたします。

書き込みのルールについて
http://dobon.net/vb/bbs/index.html
■No26610に返信(管理人さんの記事)
> 「書き込みのルールについて」にありますように、解決していない場合は解決済みにしないでください。一度「書き込みのルールについて」をご確認いただけますように、お願いいたします。
>
> 書き込みのルールについて
> http://dobon.net/vb/bbs/index.html

申し訳ありません。
■No26608に返信(sskさんの記事)
> よくわからないのでもう少し勉強します

  何が解らないのか・・・

  OSは?の答えによっては、対処方法が変わる場合
  があります。

  VSITA/Win7なら、管理者権限が必要と思いますが、
  管理者権限で動作させると言う方法が解らないので
  しょうか?

以上。
たびたびすいません。
OSはXPですが、もちろん管理者権限で実行中の
プログラム内の動作です。
現在のログインユーザーなら
Dim wp As New WindowsPrincipal(WindowsIdentity.GetCurrent())
Dim username As String = wp.Identity.Name

Dim username As String = My.User.Name
で簡単に取得できますが、ログイン中の他のユーザーとなると
わかりません。
一応、MSDN等でWindowsPrincipal.Identityも調べましたがわかりませんでした。
■No26646に返信(sskさんの記事)
> たびたびすいません。
> OSはXPですが、もちろん管理者権限で実行中の
> プログラム内の動作です。

  WinXPに管理者権限と云うものはありません・・・

  ので、ユーザーのタイプが制限された設定になっているのか
  どうかですが、ドメイン加入しているPCですか?

> 現在のログインユーザーなら
> Dim wp As New WindowsPrincipal(WindowsIdentity.GetCurrent())
> Dim username As String = wp.Identity.Name
> や
> Dim username As String = My.User.Name
> で簡単に取得できますが、ログイン中の他のユーザーとなると
> わかりません。
> 一応、MSDN等でWindowsPrincipal.Identityも調べましたがわかりませんでした。

  最後はやはりターミナルサービスAPIで取得するのが一般的かと
  思いますが。

以上。
■No26577に返信(sskさんの記事)

> また、アカウントすべてを取得するにはどうすればいいでしょうか?

Google 殿に聞いてみたところ、それらしいものが2つ見つかりました。

Sub WriteUsers1()
  Using winNT As New DirectoryServices.DirectoryEntry( _
      "WinNT://" & System.Environment.MachineName)
    For Each user As DirectoryServices.DirectoryEntry In _
        winNT.Children
      If user.SchemaClassName <> "User" Then
        Continue For
      End If
      WriteLine(user.Name)
    Next
  End Using
End Sub

Sub WriteUsers2()
  Dim query As New SelectQuery( _
      "Win32_UserAccount", "Domain='ComputerName'")
  Using searcher As New ManagementObjectSearcher(query)
    For Each obj As ManagementObject In searcher.Get()
      WriteLine(obj("Name").ToString())
    Next
  End Using
End Sub

Sub WriteLine(ByVal text As String)
  TextBox1.Text &= text & vbCrLf
End Sub

DOBON.NET | プログラミング道 | プログラミング掲示板