所有搜索引擎都找遍了, 没找到合适的解决方案, 不得已到这里求助使用ClickOnce部署技术, 发布到局域网里的一台服务器上以后(网络共享方式, 路径是\\server\tools\), 发布者自己能够双击 tools.application 或者 setup.exe 来安装, 但其他人安装时出现错误, 提示"无法启动程序, 请与程序提供商联系", 单击"详细信息"后打开一个log文件(里面的内容附在本文后面), 里面可以看到错误原因是"部署和应用程序没有匹配的安全区域"我的程序的情况如下:1. 就一个exe文件, 没有引用其他任何第三方dll或其他文件, 所以不存在有文件没有发布的问题
2. 发布者(我自己)能够双击 \\server\tools\tools.application 或者 \\server\tools\setup.exe 来安装, 并能正常自动更新, 能正常使用, 但其他人安装时出错
3. 其他客户机都是administrator登录权限, 并且都已经安装 .net framework, 我把exe文件直接发给他们的话, 他们也能正常运行使用
4. 此程序使用 WMI 监视进程的结束, 也监视粘贴板内容的更新, 所以应该要求很高的权限
5. 使用"安全性"选项里的"计算权限"工具得出的结果是:该程序需要完全信任才能正确运行我觉得应该是第4条导致的安全策略问题引起的, 问题是该怎么解决这个问题? 希望能有高手出来解答一下, 如果能解决, 送美女一个(一个叫我帮介绍男朋友的漂亮MM, 给你QQ号, 你自己去泡, 呵呵)!我搜索了很多资料, 但没有一个的符合我的情况, 我的问题和下面这个问题基本一样, 如觉得我描述不够详细, 可以参考这个:
http://topic.csdn.net/u/20070609/10/f8e69125-0c32-4657-ac6f-c2c92d55af15.html
附log文件内容:
---------------------------------------------------------------------------------------------
平台版本信息
Windows  : 5.1.2600.131072 (Win32NT)
Common Language Runtime  : 2.0.50727.832
System.Deployment.dll  : 2.0.50727.832 (QFE.050727-8300)
mscorwks.dll  : 2.0.50727.832 (QFE.050727-8300)
dfdll.dll  : 2.0.50727.42 (RTM.050727-4200)
dfshim.dll  : 2.0.50727.42 (RTM.050727-4200)源
部署 URL : *********路径删掉了
部署提供方 URL : *********路径删掉了标识
部署标识 : 提单子.application, Version=1.0.0.3, Culture=neutral, PublicKeyToken=83b110a3e0660050, processorArchitecture=msil应用程序摘要
* 可安装的应用程序。错误摘要
以下是错误摘要,这些错误的详细信息列在该日志的后面。
* 激活 \\192.168.0.99\工具\提单子.application 导致异常。 检测到下列失败消息:
+ 部署和应用程序没有匹配的安全区域。组件存储事务失败摘要
未检测到任何事务错误。警告
执行此操作的过程中未出现任何警告。操作进度状态
* [2008-11-14 13:10:20] : 已启动 \\192.168.0.99\工具\提单子.application 的激活过程。
* [2008-11-14 13:10:20] : 部署清单处理已成功完成。
* [2008-11-14 13:10:20] : 已启动应用程序的安装过程。错误详细信息
执行此操作期间检测到下列错误。
* [2008-11-14 13:10:20] System.Deployment.Application.InvalidDeploymentException (Zone)
- 部署和应用程序没有匹配的安全区域。
- 源: System.Deployment
- 堆栈跟踪:
在 System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
在 System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
在 System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState subState, ActivationDescription actDesc)
在 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut)
在 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)组件存储事务详细信息
没有可用的事务信息。

解决方案 »

  1.   

    是不是要把 install 3.1 打进包啊?
      

  2.   

    .netframework 安全配置,试试加入信任域试试我想应该有两个方面的原因
    1.部署机器有问题
    2.目标机器有问题既然拷贝到目标机器机器上能运行。就说明程序没问题。
    应该在目标机器上和部署机器net安全策略(托管环境下的安全策略)上找原因~~!
    希望对你有帮助~!
      

  3.   

    首先, 这几天比较忙, 没上来看. 抱歉
    非常感谢你的回复, 我也猜应该是安全策略的问题, 但麻烦你能稍微详细介绍一下net安全策略吗? 谢谢了
      

  4.   

    以下建议解决方案按顺序进行
    1)将你的程序以http方式发布,即通过http://192.168.0.99/....的方式,VS会自动生成一个pulish.htm,用户访问这个publish.htm来进行安装
    2)如果还是出现类似的安全错误,在客户机上将192.168.0.99在IE上加为信任站点(TrustSite)
    3)以上基本能解决问题。。如果还不行,所以你的问题是顽疾在客户机的.NET FRAMEWORK 配置向导里将192.168.0.99设置为信任之类的东西...
      

  5.   

    服务器限制, 不允许安装iis
      

  6.   

    我也遇到了同样的问题。是微软的问题,等补丁。要不就要把客户端的安全性降低,不过容易被病毒看上。请考虑以下情形:
    您在安全环境中使用 ClickOnce 部署部署应用程序。
    设置客户端使用代理服务器的计算机。
    设置客户端计算机能够绕过代理服务器对于本地地址。
    在客户端计算机上在 Machine.config 文件中, 您将 defaultproxy 功能的 启用 属性设置为 False。详细的看
    http://support.microsoft.com/kb/952324/zh-cn