Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过网络运行.net应用程序_C#_.net_Security_Networking_Clickonce - Fatal编程技术网

C# 通过网络运行.net应用程序

C# 通过网络运行.net应用程序,c#,.net,security,networking,clickonce,C#,.net,Security,Networking,Clickonce,我需要使.NET应用程序能够在网络共享上运行,问题是这将在客户端的网络共享上运行,因此路径将不相同 我已经快速查看了VisualStudio2008中的ClickOnce和发布选项,但是它需要一个特定的网络共享位置——我假设当它执行任务时,这个位置存储在某个地方 目前,这项工作是用一个旧的VB6应用程序完成的,因此绕过了所有这些安全问题,但该应用程序编写得很糟糕,几乎不可能维护,因此它确实需要去做 是否可以将域控制器设置为允许执行此特定的.NET应用程序?任何其他选择都会受到欢迎,因为我想得到这

我需要使.NET应用程序能够在网络共享上运行,问题是这将在客户端的网络共享上运行,因此路径将不相同

我已经快速查看了VisualStudio2008中的ClickOnce和发布选项,但是它需要一个特定的网络共享位置——我假设当它执行任务时,这个位置存储在某个地方

目前,这项工作是用一个旧的VB6应用程序完成的,因此绕过了所有这些安全问题,但该应用程序编写得很糟糕,几乎不可能维护,因此它确实需要去做

是否可以将域控制器设置为允许执行此特定的.NET应用程序?任何其他选择都会受到欢迎,因为我想得到这个小应用程序是非常关键的业务

我应该说,客户机网络是学校,因此经常像客户机一样被锁定,因此手动向每个客户机添加异常是一个很大的禁忌



抱歉,我忘了提到我们目前只限于.NET2.0,我们正计划将其升级到4.0,但这不会立即发生

您可以使用UNC路径吗

\\\server\folder\app.exe?

如果我没有弄错的话,也许这里的链接可以帮你省去麻烦,你担心驱动器号和处理UNC约定?请看一下上面的内容,其中包含有关如何在运行时动态映射到UNC共享的代码。

问题在于与.Net framework相关的安全性。不幸的是,我在这方面没有太多经验,但以下链接之一可能会有所帮助:

  • 最后但并非最不重要的是:
  • 在项目属性的“发布”选项卡上有一个“安装文件夹Url”文本框。VisualStudio要求您在那里放置一些内容。只需放入任意随机UNC路径(
    \\someserver\randomfolder
  • 单击“选项”按钮。选择“清单”并选中“排除部署提供程序URL”。这将删除在步骤1中强制添加的路径
  • 这应该允许客户端将您的部署放在他们想要的任何地方。当用户安装时,他们的“开始”菜单快捷方式将指向他们放置展开的位置

    下面是关于该复选框的描述

    排除部署提供程序URL
    指定是否排除 中的部署提供程序URL 部署清单。从 VisualStudio2008SP1,部署 提供程序URL可以从中排除 适用于以下情况的清单: 应用程序更新应来自 发生故障时位置未知 初次出版。之后 应用程序已发布,将更新 从任何地方检查 应用程序是从安装的


    清单中的部署位置必须与部署位置匹配。您必须使用UNC路径。这应该没什么问题。ClickOnce应用程序在用户配置文件下安装,无需管理权限。它只需要对部署应用程序的文件共享进行读取访问

    最好的解决方法是为每个学校创建部署,并让您设置UNC路径,因为这样您就可以向他们发送一个签名部署,他们可以将其放在文件共享中。但如果有很多学校参与的话,这是一个主要的p.i.t.a

    下一个答案是:谁实际将应用程序部署到每个学校,即将其放在文件共享中?有什么管理员吗

    我建议(取决于它是谁)给他们mageUI.exe,教他们如何更改部署URL并重新签署清单(它将提示)。他们重新签署部署的问题是他们必须拥有证书。你可以给每所学校自己的证书(使用VS中的“创建考试证书”按钮创建,或者使用MakeCert创建一个[询问是否需要更多信息]),或者给他们所有相同的密钥(不是很安全,但是,嘿,这会起作用)

    如果您至少更新到.NET 3.5 SP-1,则无需对应用程序进行签名即可部署该应用程序。(关于.NET 2.0,我并没有给你带来困难,我的公司也处于同样的地位,我只是在传递这些信息。)

    如果这些计算机可以访问internet,您可能会找到一个地方,以每月10美元的价格托管部署,并将其推送到Web服务器,让它们从那里安装。然后每个人都会同时获得更新,您只需将更新部署到一个位置。假设他们可以上网,这将是最简单的解决方案

    机器人网络

    我认为您的答案在于编辑/管理域策略,因此,serverfault.com可能是寻找答案的更好网站。感谢您的建议,我现在也询问了serverfault。ClickOnce是专为此使用场景而设计的。再看一看。你知道每个学校将部署的UNC路径吗?不,UNC路径可以是任何东西(取决于学校)-因此,当发布过程要求时,我会担心。可能会对代码访问安全性进行配置,以允许从这样的路径执行…不,我是说,要进行clickonce部署VS2008,需要在发布向导中使用UNC网络。我担心的是,如果我在我们这里的网络中安装一个,它将不会部署到客户端网络。@Marlon:为什么你认为它不会部署到客户端网络?为什么不加入一个与客户端网络相同的指定网络共享?我们无法真正指定路径或驱动器号-我们有100多所学校,每个学校都有不同的网络配置。您好,谢谢您的建议,这似乎可以解决我的问题-但是,特定复选框被禁用:(只有前两个被启用。你有什么建议吗?我猜是的