- PR -

ASP.Netのファイルサーバのファイルアクセス

1
投稿者投稿内容
たく
会議室デビュー日: 2005/12/20
投稿数: 3
投稿日時: 2005-12-20 21:07
はじめまして

現在、.Netにて開発を行っており
ファイルサーバのファイルのアクセスが出来ず
困っています。
過去ログも参照しましたがWebサーバとファイルサーバが
異なる環境というのが余りなく、
今回開発している要件のようにファイルサーバの
パスが画面入力でユーザが変更できるものが
ありませんでしたので投稿しました。

やりたいこては、
1.クライアントからWebサーバに
ログイン時に偽装し(Impersonate=trueで実現)
ログイン者のアクセス権を持ってユーザ毎に
設定した(設定は動的)ファイルサーバに存在する
ファイルの一覧を取得する。
これは、同時に処理を行うと重い等の理由で
EXE化されています。

2.「1」で取得した情報を一覧表示し
ファイルの削除・リネーム処理を行う。

3.設定したファイルサーバに
DBの情報を元にフォルダ作成を行う。
です。

事例1−OK
Webサーバのマシンで直接Localに接続し1〜3を行う。
(フォルダはローカルも別のマシンも可能)

事例2−OK
Webサーバ上にファイル取得先のフォルダを設定し、クライアントからログイン

事例3−NG(もっとも普通のパターンです)
Webサーバ以外のマシンにフォルダを設定し、クライアントからログイン
すると以下のエラーが発生します。
(実際のPGでは、Directory.Existsでfalseになるためそこをコメントにして出しました)
-------------------------------------------------------------------------------
内容:System.UnauthorizedAccessException: パス "\\XXXXXX\FileGetTest" へのアクセスが拒否されました。
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.Directory.InternalGetFileDirectoryNames(String fullPath, String userPath, Boolean file)
at System.IO.Directory.InternalGetFiles(String path, String userPath, String searchPattern)
at System.IO.Directory.GetFiles(String path, String searchPattern)
at GetFileInf.Class.Cls_GetFileInf_Common.GetFileInformation(Cls_DataBaseOperationTemplate clsDB, ArrayList aryOutput, String strPath, String strSrchPtn, String strRootPath)
at GetFileInf.Class1.Main(String[] args)
-------------------------------------------------------------------------------

ファイルサーバの設定したフォルダにはクライアントのユーザを
全てフルコントロールで追加してあり、エクスプローラからは
ファイルの変更をすることは可能です。

どんなことでもいいのでアドバイスをよろしくお願いします。


[ネットワーク環境]
ActiveDirectoryのドメインにクライアント、サーバとも
参加しています。

[サーバ環境]
OS:Win2003Server
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-12-21 07:27
この例外は、1.で起こるの?2.で起こるの?それとも3.で起こるの?

仮に1.で起こるとして、その実行ファイルは何時どのような方法で起動しているの?その実行ファイルの実行権限は何になっているの?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
たく
会議室デビュー日: 2005/12/20
投稿数: 3
投稿日時: 2005-12-21 09:24
1,2,3すべて起こります。

1は、ASPのソースから直接EXEを起動しています。
偽装されたユーザでプロセスを起動するため
CreateProcessAsUserを使用しています。

2,3は直接Directory.CreateDirectoryなどで
作成しています。
この際は、偽装などは行っていません。

以上、よろしくお願いします。
うみゅ
会議室デビュー日: 2005/10/11
投稿数: 12
投稿日時: 2005-12-21 23:08
実行する EXE の Main で
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
と記述してもアクセスできませんか?
たく
会議室デビュー日: 2005/12/20
投稿数: 3
投稿日時: 2005-12-22 10:15
うみゅ様
ご回答ありがとうございます。

テストしてみましたが、やはりアクセスを行うことは出来ませんでした。
エラーの内容は前回までと変わりませんでした。
1

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