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

ユーザのフォルダアクセス権取得について

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

いつもお世話になります。
アクセス権の取得について質問があります。

System.Security.AccessControlを使用してユーザのフォルダアクセス権を取得しています。
アクセス権を取得することはできるのですが、
取得したユーザがグループかユーザどちらか判断する方法がわかりません。
ご教授願いますm(..)m

コード
Dim di As New System.IO.DirectoryInfo(strFolder)
Dim ds As System.Security.AccessControl.DirectorySecurity = di.GetAccessControl()
Dim arc As System.Security.AccessControl.AuthorizationRuleCollection = ds.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
Dim strUser as String=""
For Each ar As System.Security.AccessControl.FileSystemAccessRule In arc
'ユーザ名取得
strUser=ar.IdentityReference.Value
'ここでユーザがグループかどうか判断したい

Next
■No23081に返信(一休さんの記事)
> いつもお世話になります。
> アクセス権の取得について質問があります。
>
> System.Security.AccessControlを使用してユーザのフォルダアクセス権を取得しています。
> アクセス権を取得することはできるのですが、
> 取得したユーザがグループかユーザどちらか判断する方法がわかりません。
> ご教授願いますm(..)m
>
> コード
> Dim di As New System.IO.DirectoryInfo(strFolder)
> Dim ds As System.Security.AccessControl.DirectorySecurity = di.GetAccessControl()
> Dim arc As System.Security.AccessControl.AuthorizationRuleCollection = ds.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
> Dim strUser as String=""
> For Each ar As System.Security.AccessControl.FileSystemAccessRule In arc
> 'ユーザ名取得
> strUser=ar.IdentityReference.Value
> 'ここでユーザがグループかどうか判断したい
>
> Next
>

完全に解決はしていませんが、一応自己解決ということで。
WinNT プロバイダを使用し、ユーザかグループを判断。

Dim di As New System.IO.DirectoryInfo(strFolder)
Dim ds As System.Security.AccessControl.DirectorySecurity = di.GetAccessControl()
Dim arc As System.Security.AccessControl.AuthorizationRuleCollection = ds.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
Dim strUser as String=""
For Each ar As System.Security.AccessControl.FileSystemAccessRule In arc
'ユーザ名取得
strUser=ar.IdentityReference.Value
'ここでユーザがグループかどうか判断したい
Dim obj As Object = GetObject("WinNT://" & strUser)

'ユーザかグループ
strClass=obj.class

Next

ユーザ毎に取得しており、いい方法とはいえませんが・・


未解決点:System.Security.AccessControlでアクセス権を取得したNTAccountがSIDで返ってくるものがあり、Classを取得しても、UserでもGroupでもなくDomainとして返ってくるローカルグループのデータがある。
これは、調査後、別途質問したいと思います。
解決済み!

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