7

あるマシンのリモートフォルダー(「ソース」フォルダーはマップされたドライブ-「Z:\ folder」)のファイルとフォルダーを別のマシンの別のリモートフォルダー(「宛先」)にマージするC#Windowsフォームアプリケーションを作成しました。 folderは、共有フォルダー( "\\ computername \ sharedfolder")へのUNCパスです。私は両方のフォルダに対する完全な権限を持っています。ローカルマシンでプログラムを実行すると正常に動作しますが、ソースフォルダー内からプログラムを実行しようとすると、セキュリティ例外が発生して失敗します。

宛先フォルダー(つまり、DirectoryInfo(@ "\\ computername \ sharedfolder")のDirectoryInfoコンストラクターを呼び出すと、失敗が発生します。問題は、マップされたドライブからプログラムを実行しているためだと思います。回避策はありますか?


具体的な例外は次のとおりです。タイプ'System.Security.Permissions.FileIOPermission、mscorlib、Version = 2.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'のアクセス許可の要求が失敗しました。


アップデート

さて、アプリケーションをVisual Studio 2008(以前は2005年にコーディングされていました)に取り込み、.NET 3.5フレームワークをターゲットにして、コンパイルして再試行しました。

まったく同じエラーが発生しました。


更新-解決策

.NET 3.5で試してみましたが、機能しませんでしたが、3.5SP1と言っていることに気づきました。サービスパックは間違いなく必要です。

問題が解決しました。ありがとうございました。

4

2 に答える 2

8

.NET 3.5 SP1では、ネットワーク共有からアプリケーションを実行できます。以前のバージョンでは許可されていませんでした。

于 2008-12-11T16:36:45.433 に答える
6

アプリケーションの FullTrust アクセス許可を有効にする必要があります。ネットワーク共有で実行される .NET アプリケーションには、ローカル イントラネット セキュリティ アクセス許可が与えられるため、サンドボックスで実行されます。

これは、ネットワーク外で実行されるテスト アプリの 1 つのために作成したバッチ ファイルです。わずかな変更で起動して実行できるはずです。

@ECHO OFF
SET CASPOL=%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe
CLS

%CASPOL% -pp off
%CASPOL% -m -ag 1.2 -url file://server/directory/* FullTrust

前述のように、.NET 3.5 ではこの動作が削除されています。

于 2008-12-11T16:45:05.120 に答える