分類:[C#]
2006/06/13(Tue) 11:27:45 編集(投稿者)
先日はお世話になりました。
少々時間ができた関係でファイルの所有者の取得をステップ数を多少なりとも減
らせないかと思いWMIを使用してでできないか調査してみました。
無事できましたので参考までに提示させて頂きたいと思います。
Public Shared Function GetFileOwner(ByVal filePath As String) As String
Try
Dim mo As New ManagementObject( _
"Win32_LogicalFileSecuritySetting.Path='" & filePath & "'")
Dim args(0) As Object
Dim returnCode As Integer
returnCode = Integer.Parse(mo.InvokeMethod("GetSecurityDescriptor", args).ToString)
If returnCode = 0 Then
Dim mboSecurityDecriptor As ManagementBaseObject = _
DirectCast(args(0), ManagementBaseObject)
Dim mboOwner As ManagementBaseObject = _
DirectCast(mboSecurityDecriptor.Properties("Owner").Value, ManagementBaseObject)
Return _
mboOwner.Properties("Domain").Value.ToString & "\" & _
mboOwner.Properties("Name").Value.ToString
Else
Return String.Empty
End If
Catch ex As Exception
Return String.Empty
End Try
End Function
なにぶん経験が浅いので拙いコードかと思います。
何か問題や.NETとしての記述方法等に問題があれば是非ご指摘ください。
今後、また教えて頂くこともあるかと思いますが、その際はどうぞよろしくお願
い致します。