
こんにちは。いつもお世話になっております。
ファイルのアクセス権を取得する処理を記述していて行き詰まってしまいました。
今、指定ファイルに対してアクセス許可、アクセス拒否が設定されているか取得する関数を作成しています。
-------------------------------------------------
//AceType --> ACE種別(1:アクセス許可 2:アクセス拒否)
psd = GlobalAlloc(GMEM_FIXED, 1000);
//ファイルのセキュリティ情報取得
GetFileSecurity(DirPath, DACL_SECURITY_INFORMATION, psd, 1000, &sdsize);
GetSecurityDescriptorDacl(psd, &DaclPresent, &pacl, &DaclDefaulted);
if(!DaclPresent){
//随意ACLがない
GlobalFree(psd);
return 0;
}
else{
GetAclInformation(pacl, &AclSize, sizeof(AclSize), AclSizeInformation);
AceCount = AclSize.AceCount;
for(i = 0; i < AceCount; i++){
//ACE取得
GetAce(pacl, i, (LPVOID *)&pace);
if(AceType == 1 && pace->Header.AceType == ACCESS_ALLOWED_ACE_TYPE){
//アクセス許可
break;
}
if(AceType == 2 && pace->Header.AceType == ACCESS_DENIED_ACE_TYPE){
//アクセス拒否
break;
}
}
GlobalFree(psd);
return 1;
}
-------------------------------------------------
通常のファイルについてはうまく取得できているようですが、FD内のファイルについてアクセスするとエラーとなってしまいます。
どうやら「GetFileSecurity」で「SecurityDesc」にTRUEが返ってきているようなのです。
しかし、当然「pacl」には何も返ってこないため、「GetAclInformation」でエラーとなります。
なぜ、「SecurityDesc」にTRUEが返ってきてしまうのでしょうか?
どうかご教示下さい。
<環境>
Windows 2000, Visual C++ 6.0
No.1ベストアンサー
- 回答日時:
ファイルのアクセス権の対象となるのは、NTFSのディスクシステムです。
フロッピーは対象でないですね。
Win32サブルーチンズ - Windows NTでファイルにアクセス権を設定する方法
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/1 …
| ファイルシステムがNTFS(NT File System)でフォーマットされたディスクのみが利用できます.
--
> なぜ、「SecurityDesc」にTRUEが返ってきてしまうのでしょうか?
「GetFileSecurity」関数の実行結果を確認してください。
処理自体が失敗している場合、「SecurityDesc」変数の内容は保証されません。
neKo_deuxさん、回答ありがとうございます。
>ファイルシステムがNTFS(NT File System)でフォーマットされたディスクのみが利用できます。
なるほど。そういうことだったのですね。
ただ、「GetFileSecurity」関数の実行結果を確認したところTRUEが返ってきているようでした。
(ちなみに「GetSecurityDescriptorDacl」関数もTRUEを返しました)
他に原因があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel-VBA 撮影日時の取得
-
動的に生成したVSBファイルへデ...
-
バッチによるショートカットの...
-
エクセルVBA ファイルOPEN時の...
-
一括ダウンロードの方法
-
1フォルダに保存できるファイル...
-
FileUploadで複数ファイルのア...
-
VBAを使い、Web上からファイル...
-
Excelでdatファイルを作成??
-
ブラウザでASPファイルを開こう...
-
OCXのライセンス
-
複数のテキストファイルをexcel...
-
【Excel VBA】PDFを作成して,...
-
バッチファイルでイベントログ...
-
バッチファイルが作成できない
-
Microsoft Access エラー 3051
-
複数のファイルを同時検索し、...
-
こういうソフトを探しています
-
ASPでCSVファイルを作成しダウ...
-
VBAでファイルパスが長すぎてコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを使い、Web上からファイル...
-
バッチによるショートカットの...
-
HTMLタグのあるCSVファイルを利...
-
1フォルダに保存できるファイル...
-
JSONファイルをダウンロードさ...
-
Excel VBAどこが間違ってますか?
-
global.asaについて
-
エクセルVBA ファイルOPEN時の...
-
Excelマクロでファイルオープン...
-
WebLogic/javaで一部JSPだけが...
-
エクセルVBA
-
Excel-VBA 撮影日時の取得
-
VBAでファイルを指定して印刷さ...
-
ファイルのダウンロード
-
ExcelマクロでCSV読込み
-
こんなパソコンは新品ですか??
-
fopenでNULLを返されるがGetLas...
-
海外の現地時間と日付をもとめ...
-
圧縮ファイルから復元
-
CSVファイル操作
おすすめ情報