問題タブ [getfiles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Directory.GetFiles() がアクセスを拒否されたときにフォルダー/ファイルを無視する
選択したディレクトリ (およびオプションでサブディレクトリ) にあるすべてのファイルのリストを表示しようとしています。私が抱えている問題は、GetFiles() メソッドがアクセスできないフォルダーに遭遇すると、例外がスローされ、プロセスが停止することです。
この例外を無視して (保護されたフォルダー/ファイルを無視して)、引き続きアクセス可能なファイルをリストに追加するにはどうすればよいですか?
c# - Directory.GetFiles は機能しますが、Directory.GetDirectories は同じディレクトリにありません
Web アプリケーションには、Directory.GetFiles と Directory.GetDirectories を使用して UI を生成する単純なファイル セレクターがあります。これはローカルホストでは完全に機能しますが、Windows Server 2003 ホスティングにアップロードすると、ファイルしか表示されません。同じディレクトリでは、GetFiles は機能しますが、GetDirectories は機能しません。
コードは信じられないほど単純です。文字列 dir は Server.MapPath 呼び出しによって作成され、次のようになります。
セキュリティに関して考えられることはすべて試しました。「Everyone」に Web ルートのすべてのディレクトリへのフル アクセスを許可するところまで行っても、これでも違いはありません。
したがって、問題がセキュリティにない場合は、さらに試してみるべきことについていくつかの提案をいただければ幸いです。
更新:私はかなりばかです - HTML を吐き出したコードには、ローカルでは何の違いもなかった非常に古いテスト コードが含まれていたため、気付かれずに削除されていましたが、サーバー上のすべてのディレクトリが無視されていました。 ! それが何だった?
サーバー上では、すべてのサイトはドメインによって名前が付けられたフォルダーにありますが、ローカルではそうではありません。私==ばか。みんなごめんなさい!
c# - UnauthorizedAccessException は Directory.GetFiles の失敗を解決できません
Directory.GetFiles メソッドは、アクセス権のないフォルダーに最初に遭遇したときに失敗します。
メソッドは UnauthorizedAccessException (キャッチ可能) をスローしますが、これが行われるまでに、メソッドは既に失敗または終了しています。
私が使用しているコードを以下に示します。
私の知る限り、特定のフォルダにアクセス権が定義されているかどうかを事前に確認する方法はありません。
私の例では、ネットワークを介してディスクを検索していて、ルート アクセスのみのフォルダーに出くわすと、プログラムが失敗します。
vb.net - VB.NET: GetFiles メソッド - 「パス 'G:\System Volume Information' へのアクセスが拒否されました。」
ここに私のコードがあります、
Google で調べたところ、アプリのアクセス許可を次から変更する必要があることがわかりました
Project properties > View UAC Settings > and change level to level="requireAdministrator"
しかし、それも機能していません。クラスについて何かを見つけましたFileIOPermission
が、それを実装する方法がわかりません。
==>詳細なコード。
Path は必要なパスを含む文字列です。この場合はG:\
.net - Directory.GetFilesは一度に1つのファイルを返しますか?(。ネット)
ファイルが多すぎるフォルダがあり、各ファイルを1つずつ確認したいと思います。問題は、Directory.GetFilesが完成した配列を返すことであり、これには時間がかかりすぎます。
むしろ、フォルダーを指すオブジェクトを作成してから、フォルダー内の次のファイルを返す関数を呼び出します。.NETにはこのようなクラスがありますか?
(Monoでもこれを使用する予定なので、win32相互運用機能は避けたいと思います。)
どうもありがとう。
c# - フォーム認証を使用してログインしているときに、WindowsIdentity を使用して ASP.NET のファイル/ディレクトリのリストを取得する
編集 7:
結局、これは実行できないと思います。何らかのコマンド ライン アプリケーションを使用してこれを実行し、出力を解析する必要があるかもしれませんが、多くの人がアクセスしている場合、これは非常に遅くなる可能性がありますフォルダおよび/または NetBIOS セッションの制限に達しています。
編集 6:
Windows 統合認証 (共有とデータベースにアクセスできるアカウントを使用) を使用すると、ファイル/ディレクトリのリストを取得できます。ただし、ページを更新してUnauthorizedAccessException
. おそらく、NetBIOS または ActiveDirectory の制限です。
5か月、「偽装を使用する」以外の解決策はまだありません(組み込みの.NETの方法が非常に不安定に見えるため、P/Invokeを介してそう思われます)が、それにも同じ問題があります。ユーザー名/パスワードのハードコーディングはオプションではありません。
開発 (Windows 7) ボックス (IIS または Visual Studio を使用) に組み込まれた Web サーバー) は正常に動作します。
編集 5:
インターネットとこの質問で読んだことから、これが機能する唯一の方法は次のとおりです。
- 基本認証
- なりすまし
- Web アプリケーションと同じサーバーにファイルがある
これらはどれもオプションではありません。
- ユーザーは毎回ログインする必要があります - 欠点: 追加の障壁があり、シームレスなエクスペリエンスにする必要があります
- ユーザー名とパスワードがハードコードされている - 欠点: パスワードが変更されると、コード化されたユーザー (asp.net アカウント) はファイルにアクセスできなくなります
- Web サーバーに保存するファイルが多すぎます。ディスク容量が不足しています
UNC 共有ファイルにアクセスできる Windows フォーム アプリケーションが必要なので、これでうまくいくと思っていました。それと、Web サーバーにリモート接続して Windows エクスプローラーを使用すると、ファイルにアクセスできるという事実。
おそらく、ASP.NET/IIS のセキュリティにより、P/Invoke による偽装なしでは機能しなくなります。または、ファイアウォールによってブロックされている可能性がありますか?
編集 4:
機能することの 1 つは、基本認証を使用することです。統合 Windows 認証とダイジェスト認証は機能しません。ただし、パスワードは平文で送信され、ユーザーがページにアクセスするとプロンプトが表示されるため、これは実際にはオプションではありません (私がやりたいことではありません)。
編集3:
何を試しても、UNCパス上のファイルまたはディレクトリのリストを取得できません(これらの組み合わせと個別にオンになっています)
- フォルダーへの「Everyone」フルアクセス (読み取りだけでなく) が与えられます
- ASP.NET アカウントが「オペレーティング システムの一部として機能する」場合
- 指定された IIS_WPG グループが「オペレーティング システムの一部として機能する」
- 使用済み
<authentication mode="Windows" />
- 使用済み
<identity impersonate="true"/>
サイトへのログインに使用するのと同じアカウントでサーバーに (RDP を使用して) リモート接続すると、ファイルに問題なくアクセスできます。コードでは機能しません。
編集2:
私が試したことは次のとおりです:
- Windows 認証をオンにします。ファイルは同じマシン (UNC 共有ではない) にある場合にのみアクセスでき、データベースに接続できません。
- フォーム認証をオンにすると、データベースに接続できますが、ファイルにはアクセスできません (
InvalidCastException
ID が になったためGenericIdentity
)
ロールを追加する方法がないため、Windows 認証を使用できません。ユーザー名/パスワードの入力を求めたくないのは、これは追加の手順であり、安全な接続 (SSL など) を介していないためです。また、ASP.NET アカウントにファイルへのアクセス権を与えることもできません (私はドメイン管理者ではないため)。
編集:
パスは UNC パスであり、ローカル PC 上ではありません。
フォーム認証を使用してWindowsIdentity
、Visual Studio で現在のユーザー ID を にキャストしてデバッグしようとすると、InvalidCastException
. 私は単に持っています:
次に、私が得るエラーは次のとおりです。
ASP.NET アカウントはこれらのファイルにアクセスできないため、偽装を使用してファイルのリストを取得しています。IIS を使用している場合は機能しますが、Visual Studio では機能しません。
に追加<identity impersonate="true" />
してweb.config
も何も実行されませんが、ASP.NET アカウントを使用してデータベースにクエリを実行しているため、実行したくありませんが、ユーザーにはアクセス権がありません (結果としてLogin failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
)。
web.config を介して Windows 認証をオンにするUnauthorizedAccessException
と、リモート共有からファイルのリストを取得しようとすると取得されます (クライアント PC の同じユーザーとして IIS ボックスにリモート接続した場合は、そうでなければアクセスできます)。
さらに、ASP.NET アカウントは Active Directory でセットアップされたアカウントであり、IIS に対してローカルではありません。
php - PHP を使用してパスワード領域からファイルを取得する方法
ファイルへの URL を受け取り、そのファイルを Web サーバーの特定のフォルダーにインポートするスクリプトを作成したい パスワードが設定された領域にある場合にファイルを要求する方法私はそのファイルにリクエストしますか?
c# - 実行されたコードが配置されているディレクトリを取得します
私のコードが実行されているのと同じディレクトリに、いくつかのファイルが配置されていることを知っています。それらを見つけて別の方法に渡す必要があります:
だから私はSystem.IO.Directory.GetFiles(path, "*.dll")
。しかし今、私は道を知る必要があります:
しかし、もっと短い方法はありますか?
c# - フォルダのサムネイル画像を表示するリストビューをロードするための最良の方法を探しています
私は次のコードを持っています
コードは、System.Windows.Forms.ImageListにjpgファイルの画像を入力します。また、各アイテムがイメージリスト内の画像に関連付けられているSystem.Windows.Forms.ListViewを作成します。
ファイルを小さくして、コードを最適化しようとしました。それでも、290〜30k jpgファイル(またはその他の形式)では3秒未満になりません。
リストビューをロードするためのより良い方法はありますか?