C# 应用程序在本地启动或从映射的网络驱动器(但不是从UNC路径)启动时工作 短篇小说
我有一个奇怪的问题,在互联网上找不到任何解决办法 这对于一个问题来说可能并不重要,但我更愿意提到我有两个独立的项目,并决定将它们合并到一个解决方案中。这两个项目都是简单的winform应用程序。编译后,它们分别工作:在调试期间直接在Visual Studio中(无论是在调试模式还是发布模式下),在调试器外部本地工作,以及在将它们复制到本地网络上的某个文件夹后工作 但是,在合并它们之后,其中一个应用程序在从网络启动时停止工作 停止工作意味着什么? 我将调试器附加到已经运行的进程,并发现:C# 应用程序在本地启动或从映射的网络驱动器(但不是从UNC路径)启动时工作 短篇小说,c#,vb.net,forms,winforms,unc,C#,Vb.net,Forms,Winforms,Unc,我有一个奇怪的问题,在互联网上找不到任何解决办法 这对于一个问题来说可能并不重要,但我更愿意提到我有两个独立的项目,并决定将它们合并到一个解决方案中。这两个项目都是简单的winform应用程序。编译后,它们分别工作:在调试期间直接在Visual Studio中(无论是在调试模式还是发布模式下),在调试器外部本地工作,以及在将它们复制到本地网络上的某个文件夹后工作 但是,在合并它们之后,其中一个应用程序在从网络启动时停止工作 停止工作意味着什么? 我将调试器附加到已经运行的进程,并发现: frmM
frmMain.Designer.vb
inPartial Class frmMain
inPrivate Sub InitializeComponent()
中的代码工作正常。这是通过在Sub
的开始处设置断点并逐步遍历代码直到End Sub
来检查的frmMain.vb
inPublic Class frmMain
inPrivate Sub frmMain\u Load(发送方作为对象,e作为事件参数)中的代码处理MyBase。不会触发加载。从InitializeComponent()
(第1点)退出后,代码不会进入frmMain\u Load
。主窗体与所有控件一起显示在屏幕上,但未初始化/清理,没有图标等
cmdClose
按钮关闭窗体。按钮的对话框结果
属性设置为取消
。表单本身的CancelButton
属性设置为cmdClose
。按ESC键也会关闭表单
Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click
Me.Dispose()
End Sub
Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click
Me.Close()
End Sub
Y:\文件夹开始,转到共享网络驱动器上应用程序的最终位置,然后从该位置启动应用程序,则会正常工作
\\server\share name\folder
选择相同的最终目的地,并从那里启动应用程序,则无法运行私有子表单中),Load(sender作为对象,e作为EventArgs)处理MyBase.Load
)您添加了
当UNC路径返回时,它将不起作用
System.ArgumentException
The filePath does not indicate a valid file or the filePath indicates a Universal Naming Convention (UNC) path.
表单关闭后在运行时出错。方法
Assembly.GetExecutingAssembly().Location
返回正确的路径(作为字符串,例如\\server\share name\folder
),但不返回方法
Public Shared Function ExtractAssociatedIcon(filePath As String) As Icon
不接受UNC路径
解决方案
为了解决这个问题,我们提出了两个笨拙的解决方案。您是在派生类还是类似的东西?看起来您几乎合并了这些项目,但代码仍在使用对DLL的引用。原因可能是两个不同的权限集。“NTFS”权限将使您能够像在计算机上一样访问目录,但共享文件夹权限不同。问题可能是用户无法通过共享访问应用程序所需的所有文件夹/文件,但他们可以通过NTFS访问。第二个潜在问题可能是在构建文件路径的方式上,但是如果没有任何代码,就很难分辨出任何东西。我相信.NET程序会根据不同的CAS策略运行,具体取决于它们从何处开始。您可以尝试上面提到的配置设置,看看它是否对您有帮助。@Juan@ps2goat不,我没有派生任何东西。无论这些应用程序是如何启动的,由谁开发的,它们在单独使用时都能正常工作。我自己在从资源管理器启动应用程序时遇到问题,资源管理器通常使用服务器路径而不是映射路径打开。这些都是以前的工作,因为它们不是版本1.0.0.0。。。我通过修改路径到target by
Y:`not
\\sever`,改变了所有用户的快捷方式,暂时解决了这个问题。我不明白为什么代码不能从InitializeComponent
切换到MyBase.Load
@Bradley Uffner明天上班时,我会检查它,因为我花了几个小时试图找到根本原因,但毫无线索。谢谢我会通知你的。
Public Shared Function ExtractAssociatedIcon(filePath As String) As Icon