12. 通常のプロパティ出力の抜粋(VB)
Public Shared Sub OutputProperties(
entry As DirectoryEntry, filePath As String)
Dim props = entry.Properties.PropertyNames.Cast(
Of String)().OrderBy(Function(s) s).ToList()
'プロパティ名のリス
ト
Using writer As New StreamWriter(filePath, False, Encoding.UTF8)
For Each pname In props
'プロパティ数分
Dim val = entry.Properties.Item(pname).Value
If TypeOf val Is Byte() Then
'バイト配列の時
'バイト値を取得して出力
ElseIf TypeOf val Is IADsSecurityDescriptor Then
'セキュリティ記述子の時 --> 次のページに記載
Else
'それ以外の時
'各値を取得して出力
End If
Next
End Using
End Sub
12
15. 列挙体のプロパティ値をテキスト化(VB)
Private Shared Function ToEnumValueText(
value As Integer , enumType As Type) As String
If enumType Is GetType(ADS_ACETYPE_ENUM) Then 'AceTypeの時
Return String.Format("{0}({1})",
value, [Enum].ToObject(enumType, value))
End If
Dim selector =
Function(e As Integer) [Enum].ToObject(enumType, e).ToString()
Dim values = [Enum].GetValues(enumType).Cast(
Of Integer)().Where(Function(e) (value And e) = e).OrderBy(
selector).Select(selector).ToList() '設定されている値の列挙体文字
列
If values.Count = 0 Then '設定されている値がない時
Return value.ToString()
End If
Return String.Format("{0}({1})", value, String.Join(" | ", values))
End Function
15
16. 通常のプロパティ出力の抜粋(C#)
public static void OutputProperties(
DirectoryEntry entry, string filePath) {
var props = entry.Properties.PropertyNames.
Cast<string>().OrderBy(s => s).ToList();
//プロパティ名のリスト
using (var writer = new StreamWriter(filePath, false, Encoding.UTF8)) {
foreach (var pname in props) {
//プロパティ数分
var val = entry.Properties[pname].Value;
if (val is byte[]) {
//バイト配列の時
//バイト値を取得して出力
} else if (val is IADsSecurityDescriptor) { //セキュリティ記述子
の時
--> 次のページに記載
} else {
//それ以外の時
//各値を取得して出力
}
}
}
}
16