DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Grepでのファイルのアクセス権について

環境/言語:[C# Vista .Net2.0]
分類:[.NET]

いつもお世話になっています。
C# を使ってGrepを行うようなアプリケーションを開発しています。
System.IO.DirectoryInfo.GetFilesメソッドでアクセス権がありませんというエラーが出て困っています。
なにか解決策はありませんか?
Vistaのユーザーアカウント制御で引っかかっているものと思われますので、
管理者権限に昇格させて実行(マニフェストファイル作成)してみてはいかがでしょうか。
■No23084に返信(もょもとさんの記事)
> Vistaのユーザーアカウント制御で引っかかっているものと思われますので、
> 管理者権限に昇格させて実行(マニフェストファイル作成)してみてはいかがでしょうか。
管理者権限で実行してみましたがダメでした。やはり下のようなエラーが出てしまいます。
 C:\Windows\System32\LogFiles\WMI\RtBackup' へのアクセスが拒否されました。
あとXpでも同一の例外が出たのでUACの問題じゃないと思うのですが...
■No23089に返信(takahisaさんの記事)
>  C:\Windows\System32\LogFiles\WMI\RtBackup' へのアクセスが拒否されました。

手元の PC には、そのフォルダが無いので確認できませんが、たとえば
その中のファイル(たとえば、EtwRTDiagLog.etl など)へのアクセス権が
無かったりしませんか?
■No23090に返信(魔界の仮面弁士さんの記事)
> ■No23089に返信(takahisaさんの記事)
>> C:\Windows\System32\LogFiles\WMI\RtBackup' へのアクセスが拒否されました。
>
> 手元の PC には、そのフォルダが無いので確認できませんが、たとえば
> その中のファイル(たとえば、EtwRTDiagLog.etl など)へのアクセス権が
> 無かったりしませんか?

はい、Explorerで確認したところアクセス許可がないといわれました。
C#側からアクセス許可を取得する方法はありますか?
参考URL等を載せていただけたら助かります。
■No23091に返信(takahisaさんの記事)
> C#側からアクセス許可を取得する方法はありますか?

そういう方向に持っていくと、かえって問題が大きくなってしまうような…。

例外を拾って、そのファイルへの検索は行わない(スキップする)という
処理方法にできないかどうかを検討した方が良いと思いますよ。


> Explorerで確認したところアクセス許可がないといわれました。

アクセス許可を調べるためには、「アクセス許可の読み取り許可権限」が
別途必要になります。.NET 的には FileSystemRights.ReadPermissions です。
(これは、ファイル内のデータを読み取るための権限とは、別の物です)

XP のエクスプローラから、そのファイルのプロパティを開いた時に、
[セキュリティ]タブが表示されるようであれば、FileSecurity クラスで
取得できるかと思います。表示されないなら、そのユーザでは取得できません。


> 参考URL等を載せていただけたら助かります。
http://www.microsoft.com/japan/msdn/netframework/skillup/core/article3.aspx
■No23093に返信(魔界の仮面弁士さんの記事)
> ■No23091に返信(takahisaさんの記事)
>>C#側からアクセス許可を取得する方法はありますか?
>
> そういう方向に持っていくと、かえって問題が大きくなってしまうような…。
>
> 例外を拾って、そのファイルへの検索は行わない(スキップする)という
> 処理方法にできないかどうかを検討した方が良いと思いますよ。

DirectryInfo.GetFilesでは無理そうですね。
他に似たようなメソッドがないかググってみます。

>>Explorerで確認したところアクセス許可がないといわれました。
>
> アクセス許可を調べるためには、「アクセス許可の読み取り許可権限」が
> 別途必要になります。.NET 的には FileSystemRights.ReadPermissions です。
> (これは、ファイル内のデータを読み取るための権限とは、別の物です)
>
> XP のエクスプローラから、そのファイルのプロパティを開いた時に、
> [セキュリティ]タブが表示されるようであれば、FileSecurity クラスで
> 取得できるかと思います。表示されないなら、そのユーザでは取得できません。
>
>
>>参考URL等を載せていただけたら助かります。
> http://www.microsoft.com/japan/msdn/netframework/skillup/core/article3.aspx
ありがとうございます、参考になります。

DOBON.NET | プログラミング道 | プログラミング掲示板