GetOwnerメソッドに限った話ではないけれど、.NET 2.0で搭載されたACL関連の機能では
public IdentityReference GetOwner (
Type targetType
)
こんな感じで型を引数に取るものが多い。
解説
targetType
-
所有者を取得する対象となるプライマリ グループ。
正直分かりにくいので、typeof(IdentityReference)を渡してみる。そうすると
"targetType パラメータは IdentityReference 型でなければなりません。\r\nパラメータ名: targetType"
という例外が発生する。
IdentityReferenceが必要といって、そのIdentityReferenceを渡すと怒られる。
これは例外のメッセージがよくなくて、"IdentityReferenceまたはその派生型でなければいけません。"くらいのことを書いておかないといけない。
正解は
System.Security.Principal.NTAccount
System.Security.Principal.SecurityIdentifier
のどちらかが正解。
NTAccountなら domain\user っていう形式のユーザ情報が取得できて、SecurityIdentifierなら S-1-1-1 っていうSIDが取得できる。
SIDってSIDとはいうけどSecurituIdentifierとは普段言わないのでちょっと違和感を感じますね。