C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ファイルの所有者の取得方法


(過去ログ 4 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■4049 / inTopicNo.1)  ファイルの所有者の取得方法
  
□投稿者/ yasuo 二等兵(1回)-(2006/05/30(Tue) 11:14:11)

分類:[C#] 


分類:[C#] 

ファイルの所有者の取得方法を教えてください。

取得したい内容はコマンドプロンプトで”Dir /Q”で表示される所有者です。
もしくは、ファイルのプロパティのセキュリティタブに存在する詳細設定ボタ
ン押下後に表示される画面の所有者タブに表示される
”このアイテムの現在の所有者のデータ”
です。

ShellコマンドやAPIを使用せずに.NET Frameworkのクラスで対応できないか調
べているのですが未だに見つけられずお力をお借りしたく書き込みさせて頂き
ました。

当方の環境は、
 Windows XP Pro
 Visual Basic .NET 2003
 .NET Framework 1.1
です。

よろしくお願い致します。

0
引用返信 編集キー/
■4063 / inTopicNo.2)  Re[1]: ファイルの所有者の取得方法
□投稿者/ 買太郎 一等兵(20回)-(2006/05/30(Tue) 15:15:29)
買太郎 さんの Web サイト

分類:[C#] 

とりあえず、取れてる見たいですが、試して見て下さい。

private void getOwner(string targetPath)
{

string[] sPaths = System.IO.Directory.GetFileSystemEntries(targetPath);
foreach (string sP in sPaths)
{
//フォルダアクセス権限を取得
System.Security.AccessControl.DirectorySecurity drSec
= System.IO.Directory.GetAccessControl(sP, System.Security.AccessControl.AccessControlSections.All);
System.Security.Principal.NTAccount ntAc = (System.Security.Principal.NTAccount)drSec.GetOwner(typeof(System.Security.Principal.NTAccount));
Console.WriteLine(sP + "\t" + ntAc.ToString());
}
}

0
引用返信 編集キー/
■4065 / inTopicNo.3)  Re[2]: ファイルの所有者の取得方法
□投稿者/ 買太郎 一等兵(21回)-(2006/05/30(Tue) 15:23:41)
買太郎 さんの Web サイト

分類:[C#] 

.Net Framework 2.0から追加された
System.Security.AccessControl 名前空間に色々あると思います

.Net Framework 1.0 だと、APIを使わないと無理だったと思います

0
引用返信 編集キー/
■4066 / inTopicNo.4)  Re[3]: ファイルの所有者の取得方法
□投稿者/ yasuo 二等兵(2回)-(2006/05/30(Tue) 15:48:04)

分類:[C#] 

買太郎さんへ
返信ありがとうございます。
書き込みを確認し早速試そうとクラス等を調査していたところ
.NET Framework 2.0から提供されていること気づきました。
(その後の書き込みを見ていませんでした。)

残念ながらVer1.1だと提供されていないようですね。
Ver2.0から提供されたと明示されていますのでVer1.1ではないことの裏付けが
取れてよかったです。

諦めて下記APIを使用してコーディングします。
・GetNamedSecurityInfo
 <http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsecupf/html/_win32_GetNamedSecurityInfo.asp>
・LookupAccountSid
 <http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsecupf/html/_win32_LookupAccountSid.asp>

ありがとうございました。
大変勉強になりました。


0
引用返信 編集キー/
■4072 / inTopicNo.5)  Re[4]: ファイルの所有者の取得方法
□投稿者/ yasuo 二等兵(3回)-(2006/05/30(Tue) 17:38:22)

分類:[C#] 

解決ボックスのチェックのみです。

解決済み
引用返信 編集キー/
■4277 / inTopicNo.6)  WMIを使ったファイル所有者の取得方法
□投稿者/ yasuo 二等兵(4回)-(2006/06/13(Tue) 11:13:31)

分類:[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としての記述方法等に問題があれば是非ご指摘ください。

今後、また教えて頂くこともあるかと思いますが、その際はどうぞよろしくお願
い致します。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -