2009-03-04 77 views
4

我爲一家生產商業產品的公司工作,我們正在努力提供一種解決方案,使我們的一些大客戶能夠通過ClickOnce分發我們應用程序的客戶端。ClickOnce和安全

目的是使我們的客戶將部署的ClickOnce安裝到網絡共享,然後通過電子郵件或其他方式發送一個鏈接給客戶端的應用程序清單。

我們已經能夠成功整合生產的ClickOnce都將安裝到我們的自動化構建(使用法師的命令行工具),然後我們就可以成功運行在客戶機上的實際安裝。但是,安裝和啓動後,我們的應用程序在運行時會拋出SecurityException,因爲它被拒絕訪問FileIOPermission。我們的應用程序需要FullTrust權限,但似乎如果執行程序集的CodeBase位置是網絡共享,則您只被授予LocalIntranet權限(不包括FileIOPermission)。

這裏有一篇文章,似乎表明這是一個相當普遍的問題: http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

一種解決方法是使用本文中的CasPol工具提供的,但我們將不得不每一個客戶機上運行此在部署環境中。這本身並不是一個真正的問題,更重要的是,您需要在客戶端計算機上擁有管理權限才能執行CasPol工具的操作,並且客戶環境中的大多數客戶端都不具備這些權限。

的一篇文章也已經發表了,這似乎意味着,對於運行CasPol修復的需求已經得到緩解與.NET 3.5 SP1的發佈同樣的博客: http://blogs.msdn.com/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx

不過,我修改我們的應用程序如下文所詳述的那樣專門針對框架的SP1版本: http://msdn.microsoft.com/en-us/library/bb398202.aspx#

在完成此操作後,我們仍然遇到了同樣的SecurityException。因此,我在文章中詳細介紹了一些特定的SP1 ClickOnce設置,但仍然沒有喜悅。 如果我直接從發佈網絡共享啓動應用程序,我被授予了權限,但似乎只是在ClickOnce的上下文中我們被拒絕了。

有沒有人遇到類似這些問題?我曾想過如果在這些權限方面SP1的框架發佈中有問題,別人會注意到它,因爲我們甚至還沒有發佈ClickOnce解決方案。

回答

3

我想我在.NET 4.0上遇到了一個類似的問題,午餐時出現安全異常。我找到的解決方案是用批准的證書(不是默認的Visual Studio爲您的項目生成的)對清單進行數字簽名。

這是一個已知的「錯誤」(或通過設計)ClickOnce部署清單。

您的項目是否已簽名?