2

aspアプリケーションで、アプリケーションが実行されていたアカウント(つまり、aspアカウント?)にのみアクセスできるフォルダーを作成する必要があります。

実際にこれを使いたいのですが、「Computer\CurrentAccount」を動的に使う方法がわかりません。

現在の作業アカウントを取得したい。

ありがとう。

4

1 に答える 1

5

ここに、インスタンスを作成DirectorySecurityし、名前付きユーザーのACEを追加する例があります(ただし、デフォルトのコンストラクターを使用して、空のACLで開始します)。

アカウントのSIDを取得するには、次の2つの可能性があります(これらはテストが必要です)。

最初のアプローチは、プロセスの所有者がディレクトリの所有者であることに依存することです。これは、偽装を行う場合に機能しなくなる可能性があります(たとえば、Windows認証で、ファイルシステムコンテンツへのアクセス制御にクライアントのIDを使用する場合)。

var ds = new DirectorySecurity();
var sid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null)
var ace = new FileSystemAccessRule(sid,
                                   FileSystemRights.FullControl,
                                   AccessControlType.Allow);
ds.AddAccessRule(ace);

プロセストークンからプロセス所有者を取得するための2番目のアプローチでは、P/Invokeが必要になります。これには例が含まれます:http://www.codeproject.com/KB/cs/processownersid.aspx、SIDを取得したら、そのインスタンスのSecurityIdentifierインスタンスを作成し、上記に従ってACLを作成します。

于 2009-06-17T12:34:45.137 に答える