こんにちは。いつもお世話になっております。
ファイルのアクセス権を取得する処理を記述していて行き詰まってしまいました。
今、指定ファイルに対してアクセス許可、アクセス拒否が設定されているか取得する関数を作成しています。
-------------------------------------------------
//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で質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Gmail 現在、お名前ドットコムで取得したドメインから「hello@〜」というメールアドレスを作成し、Gmai 1 2022/07/03 23:13
- ドライブ・ストレージ vhdxファイルからのデータの取り出し方 4 2023/06/14 23:53
- その他(クラウドサービス・オンラインストレージ) OneDriveのアクセス権限の変更について教えてください! 1 2023/03/02 13:49
- Windows 10 OpenFile(アクセスが拒否されました。5) 1 2022/09/14 14:36
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access VBA で フォルダ権限をチェックする
Visual Basic(VBA)
-
VBA フォルダ アクセス権限付与
その他(プログラミング・Web制作)
-
フォルダ、ファイルのアクセス権設定状態を確認したい
ネットワーク
-
-
4
アクセス権のチェック方法について
C言語・C++・C#
-
5
ファイルとフォルダのセキュリティ情報の取得
Visual Basic(VBA)
-
6
共有フォルダの「共有のアクセス許可」を設定するコマンド
その他(プログラミング・Web制作)
-
7
ファイル書込みで一行もしくは部分的に上書きする
PHP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAどこが間違ってますか?
-
バッチによるショートカットの...
-
エクセルVBA ファイルOPEN時の...
-
iniファイルのセクションについて
-
VBAを使い、Web上からファイル...
-
1フォルダに保存できるファイル...
-
C#のAxWindowsMediaPlayerから...
-
ファイルのアクセス権の取得
-
subversionからファイル取得時...
-
ワードをHPに追加したいのです...
-
ボタンをファイルにリンクさせたい
-
HTMLタグのあるCSVファイルを利...
-
VBAでファイルパスが長すぎてコ...
-
Excelでdatファイルを作成??
-
ファイルやフォルダの有無、他...
-
ASP上でFileSystemObjectのDele...
-
ダウンロード不可PDFファイルは...
-
複数のファイルを同時検索し、...
-
テキストファイルの文字色に色...
-
サーバー上のファイルアクセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチによるショートカットの...
-
1フォルダに保存できるファイル...
-
Excel VBAどこが間違ってますか?
-
エクセルVBA ファイルOPEN時の...
-
HTMLタグのあるCSVファイルを利...
-
Excel-VBA 撮影日時の取得
-
HTMLプログラムにExcelをリンク...
-
Windowsのメモ帳でジョークウイ...
-
JSONファイルをダウンロードさ...
-
C#のAxWindowsMediaPlayerから...
-
fopenでNULLを返されるがGetLas...
-
ボタンをファイルにリンクさせたい
-
VBAを使い、Web上からファイル...
-
エクセルVBA
-
WebLogic/javaで一部JSPだけが...
-
subversionからファイル取得時...
-
エクセルVBAについて
-
動的に生成したVSBファイルへデ...
-
【VC++6.0 MFC】画像表示について
-
IEで複数のファイル選択方法
おすすめ情報