Tuesday, October 26, 2010

如何:将权限授予文件夹和程序集

FW:http://technet.microsoft.com/zh-cn/office/zdc263t0%28VS.80%29.aspx

Visual Studio Tools for the Microsoft Office System
如何:将权限授予文件夹和程序集

下面的过程将为 Visual Studio Tools for Office 解决方案中的程序集或文件夹授予完全信任权限。通常,要为特定程序集授予权限。如果具有多个程序集,而且确信位置是安全的,则可为程序集所在的文件夹授予完全信任权限。如果为文件夹授予信任权限,该文件夹及其子文件夹中的所有程序集也都是受信任的。

在 Office 解决方案中,有三种方式可以向文件夹和程序集授予权限:

*

使用 Visual Studio 中的“Trust Assemblies Location”属性。(仅在开发时有用。)

“Trust Assemblies Location”属性只在开发期间起作用;此属性不影响最终用户。由于这个原因,您不能使用此方法进行部署。有关更多信息,请参见 Visual Studio Tools for Office 项目中的属性。
*

使用“Microsoft .NET Framework 2.0 配置”工具。

此工具为使用安全策略提供了图形用户界面。
*

使用“代码访问安全策略”工具 (Caspol.exe)。

此工具是用于使用安全策略的命令行界面。

Note注意

以上是出于开发和测试程序集的目的,设置您自己的安全策略的基本步骤。如果您不能确定程序集或目录是安全的,不要使用这些步骤向其授予信任。有关设置安全策略的更多信息,请参见 部署安全策略 和 使用 .NET Framework 配置工具 (Mscorcfg.msc) 配置代码组。
使用 Trust Assemblies Location 属性

默认情况下,创建项目时,将基于位置授予完全信任。如果“信任程序集位置”已更改,可以重新应用默认设置:
向开发计算机上的项目程序集授予完全信任

1.

在 Visual Studio 中,在“解决方案资源管理器”中选择该项目节点。
2.

在“属性”窗口中选择“Trust Assemblies Location”。
3.

将该属性设置为 true。
4.

在“生成”菜单上单击“生成解决方案”。

使用 .NET Framework 2.0 配置工具

向以下对象授予信任的步骤是不一样的:

*

本地计算机上的程序集或文件夹,或
*

网络中其他计算机(或映射驱动器)上的程序集或文件夹。

向本地计算机上的程序集或文件夹授予完全信任

1.

在“控制面板”中打开“管理工具”。
2.

运行 “Microsoft .NET Framework 2.0 配置”。
Note注意

可能有多种名称以“Microsoft .NET Framework”开头的类似工具。确保使用的配置工具与您的运行库的版本相匹配。
3.

在左侧的树视图中,依次展开“.NET Framework 2.0 配置”、“我的电脑”、“运行库安全策略”、“用户”、“代码组”、“All_Code”,然后展开“VSTOProjects”。
Note注意

如果之前没有编译过 Visual Studio Tools for Office 项目,则不会有 VSTOProjects 文件夹。可以将新的代码组添加到“All_Code”根节点,或者可以编译 Visual Studio Tools for Office 项目以自动创建 VSTOProjects 文件夹。
4.

右侧是 VSTOProjects 代码组的说明,其页面底部有一个“任务”区域。在“任务”区域中单击“添加子代码组”。

“创建代码组”向导启动。
5.

选择“创建新代码组”,然后输入可以帮助您识别项目的名称和说明。单击“下一步”。
6.

在“选择此代码组的条件类型”列表中单击“URL”。
7.

在 “URL”框中键入程序集的完整路径,或者键入项目的 bin 文件夹的路径并在后面添加一个星号(例如,c:\\ExcelApplication1.dll 或 c:\\ExcelApplication1\bin\*)。
8.

单击 “下一步”。
Note注意

如果键入 bin 文件夹的路径,则将在您的计算机上对该文件夹及其全部子文件夹下的所有程序集授予完全信任。确保未经授权的人员无法访问完全受信的文件夹,否则有人可能在该文件夹中放入恶意程序集,并且该程序集将以完全信任权限运行。
Caution note警告

不要向整个硬盘(如 C:\*)或常规文件夹(如“我的文档”)授予权限,因为您可能会将权限授予来自 Internet 或电子邮件的缓存程序集。仅将权限授予特定的项目文件夹,这些文件夹包含您确信可以安全运行的程序集。
9.

选择“使用现有权限集”,然后从列表中选择“FullTrust”。
10.

单击“下一步”。
11.

单击“完成”。

向网络计算机或映射驱动器上的程序集或文件夹授予完全信任

1.

在“控制面板”中打开“管理工具”。
2.

运行 “Microsoft .NET Framework 2.0 配置”。
Note注意

可能有多种名称以“Microsoft .NET Framework”开头的类似工具。确保使用的配置工具与您的运行库的版本相匹配。
3.

在左侧的树视图中,依次展开“.NET Framework 2.0 配置”、“我的电脑”、“运行库安全策略”、“计算机”、“代码组”、然后展开“All_Code”。
4.

在 “All_Code”下右击“LocalIntranet_Zone”,再单击“新建”。

该操作假定目标服务器位于“本地 Intranet”区域中。如果它已被添加到 Internet 资源管理器中的“受信任站点”区域,则右击 Trusted_Zone。如果程序集位于映射驱动器上,则必须使用“LocalIntranet_Zone”。
5.

输入可以帮助您识别项目的名称和说明。单击“下一步”。
6.

在“选择此代码组的条件类型”列表中单击“URL”。
7.

在“URL”框中键入程序集的完整路径,或者键入项目的 bin 文件夹的路径并在后面添加一个星号(例如,\\ServerName\FolderName\ExcelApplication1.dll 或 http://ServerName/FolderName/ExcelApplication1/bin/*)。
8.

单击“下一步”。
Note注意

如果键入 bin 文件夹的路径,则将在您的计算机上对该文件夹及其所有子文件夹中的所有程序集授予完全信任。如果不确定这些文件夹是否安全,这样宽松的权限可能会带来安全风险。
9.

选择“使用现有权限集”,然后从列表中选择“FullTrust”。
10.

单击“下一步”。
11.

单击“完成”。

Note注意

只有管理员才能向网络计算机上的程序集或文件夹授予完全信任,且信任必须在计算机级别而不是在用户级别授予。
使用代码访问安全策略工具 (Caspol.exe)

也可以使用代码访问安全策略工具 (Caspol.exe) 从命令提示符向文件夹授予完全信任。有关 Caspol.exe 的更多信息,请参见 代码访问安全策略工具 (Caspol.exe)。

可以在用户级别使用普通用户权限,向本地计算机上的文件夹授予信任。要向网络位置授予信任,必须具有管理员特权并在计算机级别更改安全策略。计算机策略级别独立于用户策略级别工作,并且计算机策略级别不会对 Intranet 区域授予完全信任,即使用户策略授予完全信任。这些策略级别必须一致。
Note提示

手动键入命令。将命令复制和粘贴到命令提示符中可能导致“未知选项”错误。
向本地文件夹授予完全信任

*

在 Visual Studio 命令提示符下键入以下命令:

caspol -u -ag All_Code -url
C:\\\* FullTrust -n "" -d
""

向网络文件夹授予完全信任

*

在 Visual Studio 命令提示符下键入以下命令:

caspol -m -ag LocalIntranet_Zone -url
\\\\* FullTrust -n "" -d
""

有关更多信息,请参见 如何:使用 Caspol.exe 添加代码组。
Note注意

部署策略之后,受策略更改影响的所有人都必须退出并重新启动解决方案中使用的所有 Office 应用程序,这样对该策略所做的更改才会生效。如果 Microsoft Office Word 2003 是解决方案的一部分,用户还必须退出并重新启动 Microsoft Office Outlook 2003。另外,如果用户在 Internet Explorer 中打开了文档或工作簿,则进程可能仍在运行。检查 Windows 任务管理器以确保没有 Office 应用程序的实例。其他承载 Office 应用程序的应用程序也会阻止实施新的权限。当安全策略改变时,用户应当退出所有使用 Office 的应用程序(无论是寄宿的还是独立的)。

Wednesday, October 13, 2010

Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not a valid IPv4 or IPv6 address

在本地安装了服务器,测试对比了下,最后发现是远程服务器上全局变量没有开启 register_globals=off ,不过那服务器上的配置我也改不了,后来倒是在网上找到可以在源文件中加入如下代码来解决问题:


(可以更改配置的话,是在服务器php.ini文件中。

至于register_globals=on与register_globals=off的区别与利弊,在下就不在这边发表愚见了。