VS2008を使用してデスクトップアプリケーションを作成しました。
ローカルで実行すると、すべてうまく機能します。
出力フォルダーを共有し(ネットワークユーザーがファイルを変更できるようにすることなく)、イントラネット上の別のVistaコンピューターからexeを実行しました。
共有exeを実行しているときに、ファイルを読み取ろうとすると「System.UnauthorizedAccessException」が発生します。
ファイルの読み取りを許可するにはどうすればよいですか?コードを変更する必要がありますか?Vistaコンピューターのapplication\folderにアクセス許可を付与する必要がありますか?どうやって?
ノート:
ClickOnceは使用しません。アプリケーションはxcopyを使用して配布する必要があります。
私のアプリケーションターゲットフレームワークは「.NetFramework2.0」です。
Vistaコンピュータでは、「controlPanel | UninstallOrChangePrograms」には、「Microsoft .NetFramework3.5SP1」が含まれていると表示されます。
フォルダドライブもマップしようとしましたが、同じエラーが発生しました。fileNameが "T:\my.ocx"になりました。
'------------------------------------------------- ---------------------
'私のコード:
Dim src As String = mcGlobals.cmcFiles.mcGetFileNameOcx()
Dim ioStream As New System.IO.FileStream(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)
'------------------------------------------------- ---------------------