共有フォルダーからデスクトップアプリケーションを実行するときに、UnauthorizedAccesSexception
-
01-10-2019 - |
質問
VS 2008を使用してデスクトップアプリケーションを作成しました。
ローカルで実行すると、すべてがうまく機能します。
出力フォルダーを共有し(ネットワークユーザーがファイルを変更できるようにすることなく)、イントラネットの別のVistaコンピューターからEXEを実行しました。
共有exeを実行するとき、ファイルを読み取ろうとするときに「System.uthorizedAccesSexception」を受け取ります。
ファイルを読む許可を与えるにはどうすればよいですか?コードを変更する必要がありますか? Vistaコンピューターのアプリケーションフォルダーに許可を付与する必要がありますか?どうやって?
ノート:
ClickOnceは使用しません。アプリケーションはXcopyを使用して配布する必要があります。
私のアプリケーションターゲットフレームワークは「.NETフレームワーク2.0」です
Vistaコンピューターでは、「ControlPanel | UninstallorChangePrograms」と書かれています。
また、フォルダドライブをマップしようとしましたが、同じエラーがありましたが、ファイル名は「T: my.ocx」です。
' ----------------------------------------------------------------------
'私のコード:
dim src as string = mcglobals.cmcfiles.mcgetfilenameocx()
新しいsystem.io.filestreamとしてのiostream(src、io.filemode.open)' ----------------------------------------------------------------------
パブリック共有関数mcgetfilenameocx()as string
' ----------------------------------------------------------------------
Dim dirName As String = Application.StartupPath & "\" Dim sFiles() As String = System.IO.Directory.GetFiles(dirName, "*.ocx") Dim i As Integer For i = 0 To UBound(sFiles) Debug.WriteLine(System.IO.Path.GetFullPath(sFiles(i))) ' if found any - return the first: Return System.IO.Path.GetFullPath(sFiles(i)) Next Return "" End Function
' ----------------------------------------------------------------------
'私が受け取る例外:
System.UnauthorizedAccessException: Access to the path '\\computerName\sharedFolderName\my.ocx' is denied. at System.IO._Error(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(...) at System.IO.FileStream..ctor(...) at System.IO.FileStream..ctor(String path, FileMode mode)
' ----------------------------------------------------------------------
解決
それを見つけた。
MSDNによると、[FileStream Constructor(String、FileMode)
. 。 。 。 FileAccessパラメーターのないコンストラクターの場合、
- モードパラメーターがに設定されている場合 追加, 書く デフォルトのアクセスです。
- それ以外の場合、アクセスが設定されます 読み書き.
- >私のコードはdefaultを使用しました、iostream.canwrite:= true、そして私は持っていません 書く 共有フォルダーの許可。
だから私は追加しました fileaccess パラメーター:
new code:
Dim ioStream As New System.IO.FileStream(srcOcx, IO.FileMode.Open, IO.FileAccess.Read)
old code:
Dim ioStream As New System.IO.FileStream(srcOcx, IO.FileMode.Open)
他のヒント
で始まります .NETフレームワーク3.5 SP1 ネットワーク共有からアプリケーションを実行することができます。あなたはそれをターゲットにする必要はありません、あなたはそれをインストールする必要があります。