- kes
- ベテラン
- 会議室デビュー日: 2004/08/10
- 投稿数: 67
|
投稿日時: 2004-12-21 18:23
現在ログオン中のユーザが所属するグループ名を取得することは可能でしょうか。
開発環境はVB.NETでOSはXPです。
ユーザ名はSystem.Environment.UserNameで取れることが分かったのですが、
そのユーザが属するグループが取れるのか分かりません。
ご存知の方、よろしくお願いいたします。
|
- mei
- 大ベテラン
- 会議室デビュー日: 2003/04/08
- 投稿数: 114
|
投稿日時: 2004-12-22 02:07
こんばんは、meiです。
引用: |
|
kesさんの書き込み (2004-12-21 18:23) より:
現在ログオン中のユーザが所属するグループ名を取得することは可能でしょうか。
開発環境はVB.NETでOSはXPです。
|
ちょっとややこしいですが、こんな感じです。
コード: |
|
using System;
using System.Collections;
using System.Management;
class Program {
static void Main(string[] args) {
// ドメインとユーザを指定して所属するグループを取得するクエリー
string s = String.Format("select * from Win32_GroupUser where "
+ "PartComponent=\"Win32_Account.Domain='{0}',Name='{1}'\"",
Environment.UserDomainName, Environment.UserName);
// クエリーの実行
SelectQuery query = new SelectQuery(s);
ManagementObjectSearcher ms = new ManagementObjectSearcher(query);
foreach (ManagementObject mo in ms.Get()) {
// グループのパスを取得する
string path = mo["GroupComponent"].ToString();
// パスからグループオブジェクトを作成
ManagementObject go = new ManagementObject(path);
// グループの名前を取得
Console.WriteLine(go["Name"]);
}
}
}
|
System.Management.dllを参照に追加する必要があるので注意です。
|
- kes
- ベテラン
- 会議室デビュー日: 2004/08/10
- 投稿数: 67
|
投稿日時: 2004-12-22 11:47
ありがとうございます。
これはC#のコードしょうか。VB.NETでも同じように使えるのでしょうか。
あまり回答がいただけないみたいで
根本的な部分で不安になってきたんですが、
要はやりたいことは
Windows上の特定のグループに属するユーザにだけ、
今回作成するアプリの起動を許可したいのです。
起動した時に、そのユーザが属するグループ名を取得して、
そこに想定したグループ名があるか、でチェックしようとしてます。
他にもっとよいやり方があるのでしょうか。
よろしくお願いいたします。
|
- mei
- 大ベテラン
- 会議室デビュー日: 2003/04/08
- 投稿数: 114
|
投稿日時: 2004-12-22 12:20
こんにちは、meiです。
引用: |
|
kesさんの書き込み (2004-12-22 11:47) より:
これはC#のコードしょうか。VB.NETでも同じように使えるのでしょうか。
|
.NET FrameworkのライブラリなのでC#でもVB.NETでも使い方は一緒です。
|
- にしざき
- ぬし
- 会議室デビュー日: 2003/06/30
- 投稿数: 304
|
投稿日時: 2004-12-22 13:31
コード: |
|
Dim principal As System.Security.Principal.WindowsPrincipal = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
If (principal.IsInRole(必要な権限)) Then
任意の処理
End If
|
※必要な権限は、
System.Security.Principal.WindowsBuiltInRole.Administrator 等のように System.Security.Principal.WindowsBuiltInRole を渡すか、
"BUILTIN\\ビルトイングループ名" あるいは "ドメインもしくはマシン名\\グループ名" の文字列
|
- kes
- ベテラン
- 会議室デビュー日: 2004/08/10
- 投稿数: 67
|
投稿日時: 2004-12-22 17:03
Principalオブジェクトでうまくいきそうです。
BUILTIN以外の自分で作ったグループだとなんかうまくいきませんが。
もうちょっといろいろ試してみます。
ありがとうございました。
|
- kes
- ベテラン
- 会議室デビュー日: 2004/08/10
- 投稿数: 67
|
投稿日時: 2004-12-27 10:40
再起動したらうまく行きました。
ありがとうございました。
|