我使用VS 2008创建了一个桌面应用程序。
当我在本地运行时,一切正常。
我分享了我的输出文件夹(不允许网络用户更改我的文件) 并从我们内联网上的另一台Vista计算机上运行我的exe。
运行共享exe时,我在尝试读取文件时收到“System.UnauthorizedAccessException”。
如何授予读取文件的权限? 我应该更改代码吗? 我应该授予Vista计算机上的application \文件夹的权限吗?如何?
注意:
我不使用ClickOnce。应该使用xcopy分发应用程序。
我的应用程序目标框架是“.Net Framework 2.0”
在Vista计算机上,“controlPanel | UninstallOrChangePrograms”它说它有“Microsoft .Net Framework 3.5 SP1”
我也尝试映射文件夹驱动器,但是遇到了同样的错误,只是现在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)
'---------------------------------------------- ------------------------
答案 0 :(得分:0)
根据MSDN,[FileStream构造函数(String,FileMode)]
。 。 。对于没有FileAccess参数的构造函数,
- >我的代码使用了默认值,ioStream.CanWrite:= True,我对共享文件夹没有 Write 权限。
所以我添加了 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)
答案 1 :(得分:0)
从 .NET Framework 3.5 SP1 开始,您可以从网络共享运行应用程序。您无需定位它,只需安装它即可。