- PR -

アクセス権限取得

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/03/08
投稿数: 2
投稿日時: 2005-03-08 16:53
フォルダやファイルのアクセス権限取得のプログラムをC#で記述しているのですが、うまくAceessMaskが取得できません。
フォルダを1つ作成し、そのフォルダのアクセス権限を「削除不可」にし、そこへファイルをひとつコピーして、そのファイルに対してアクセス権限の取得のプログラムをテストしているのですが、以下のMapGenericMaskでAceessMaskが取得できていないようなんです。(0の値が入ってくる)

以下ソース
------------------------------------------------------------------------------
const uint FILE_GENERIC_READ = (0x20000 | 0x1 | 0x80 | 0x8 | 0x100000);
const uint FILE_GENERIC_WRITE = (0x20000 | 0x2 | 0x100 | 0x10 | 0x4 | 0x100000);
const uint FILE_GENERIC_EXECUTE = (0x20000 | 0x80 | 0x20 | 0x100000);
const uint FILE_ALL_ACCESS = (0x20000 | 0x100000 | 0x1FF);

private struct GENERIC_MAPPING
{
public uint genericRead;
public uint genericWrite;
public uint genericExecute;
public uint genericAll;
}

=== 中略 ============================================

genericMapping.genericRead = FILE_GENERIC_READ;
genericMapping.genericWrite = FILE_GENERIC_WRITE;
genericMapping.genericExecute = FILE_GENERIC_EXECUTE;
genericMapping.genericAll = FILE_ALL_ACCESS;
// アクセスマスク内の汎用のアクセス権を、
// 特定の標準的なアクセス権にマップします。
MapGenericMask(ref accessMask, ref genericMapping);
------------------------------------------------------------------------------

処理の流れとしては
・GetFileSecurityでセキュリティ情報の取得
・ImpersonateSelfでトークンの取得
・GetCurrentThreadで擬似ハンドルの取得
・OpenThreadTokenでアクセストークンを開く
・MapGenericMaskで標準的なアクセス権にマップ
・AccessCheckでアクセス権のチェック
というような流れで行っています。
MapGenericMaskに関しては、SDK以外に詳しい資料が見つからないようです。
1

スキルアップ/キャリアアップ(JOB@IT)