不使用GACUtil.exe,如何部署和卸载程序集到GAC中

Windows Server 2008Windows Server 2008 上, 部署程序集到GAC中时,如果以直接将程序集拖拽到GAC的方式部署,将会得到Access is denied的错误消息。(与使用stsadm报错)

解决方案:

 

1.关闭UAC,重启服务器,此时重新部署程序集就OK

此方法有一个缺点,就是修改完UAC后,必须重启服务器。

 

2.创建一个快捷方式,目标为:%SystemRoot%\explorer.exe C:\Windows\assembly,接着以管理员的身份运行这个快捷方式,此时便可对GAC进行操作。

如果需要部署程序集到GAC中,则使用相同的方式,创建一个快捷方式,目标为:%SystemRoot%\explorer.exe 目标dll文件的路径(如:D:\bin)

此时便可以以直接将程序集拖拽到GAC的方式部署程序集(经测试Windows Server 2008 R2,无法正常工作)。

以下是老外的原文:

create a shortcut to Windows Explorer which includes the path to the GAC (Target: %SystemRoot%\explorer.exe C:\Windows\assembly), which you can then invoke via Right-click, Run as Administrator. I put one on my desktop and labeled it "GAC" for quick access.

 

          Note: 以下方法行不通,

1.Open a Command Prompt as Administrator (right click, Run As Administrator).

2.Run "explorer C:\windows\assembly".

3.Open a new explorer window from the window which just opened (Right click -> Open whilst holding Ctrl). I did this by hopping back up to C:\windows and the navigating to my assembly in the second (new) window.

4.Navigate in the first windows back to C:\windows\assembly.

5.Drag and drop between the two windows.

 

3. 使用PowerShell 调用 System.EnterpriseServices.Internal.Publish. GacInstall( $assembly )方法。

Install-GAC.ps1

安装命令: .\Install-GAC.ps1 1 "C:\test.dll"

卸载命令:  .\Install-GAC.ps1 0 "C:\test.dll"

详情参考原文:PowerShell: Install-Gac (GACUTIL for PowerShell)

 

如何关闭UAC

Windows Server 2008默认是将UAC(User Account Control : 用户帐户近控制)开启的,但UAC是导致用户认证失败,因此建议在配置SPS时,建议将其关闭。
需要注意:Windows server 2008与windows server 2008 R2关闭UAC方法略有不同。
Windows Server 2008 UAC关闭方法有几种,大家可以google下,我在这里只介绍其中一种。 1. 依次点击“开始 >运行”,输入MSCONFIG,打开系统配置实用程序 2. 选择Tools(工具)选项卡,向下滚动找到“改变UAC设置(change UAC settings)”,点击“运行(launch)”。 3. windows server 2008,控制面板→用户帐户→打开或关闭用户账户控制→取消使用用户账户控制(UAC)帮助保护您的计算机,注意此时需要重启服务器。windows server 2008 r2,控制面板→用户帐户→用户账户→改变UAC设置→选择永不通知,不需要重启服务器
Windows server 2008 r2用户帐户控制中的新增功能 用户帐户控制的新增功能有哪些? 在引入用户帐户控制 (UAC) 之前,如果用户以管理员身份登录,则会自动授予用户对所有系统资源的完全访问权限。 而当用户作为管理员运行时,可以安装合法软件,也可以有意或无意地安装恶意程序。管理员安装的恶意软件可以严重危害计算机并影响所有用户。 随着 UAC 的引入,访问控制模型已经更改,以便减少恶意程序的影响。 当用户试图启动管理员任务或服务时,“用户帐户控制”对话框会要求用户单击“是”“否”,然后才允许使用用户的完全管理员访问令牌。 如果用户不是管理员,则用户必须提供管理员凭据才能运行该程序。因为 UAC 要求管理员审核应用程序的安装,所以未授权的应用程序或没有得到管理员明确许可的应用程序无法自动安装。 在 Windows® 7 和 Windows Server® 2008 R2 中,已改进 UAC 功能,从而:

  • 增加了标准用户可以执行的任务(不提示管理员审批)数量。
  • 允许具有管理员权限的用户在控制面板中配置 UAC 体验。
  • 提供其他本地安全策略,使本地管理员能够为管理员批准模式下的本地管理员更改 UAC 消息的行为。
  • 提供其他本地安全策略,使本地管理员能够为标准用户更改 UAC 消息的行为。

哪些人会希望使用 UAC? 通过禁止可能具有恶意的程序运行,UAC 帮助标准用户和管理员保护其计算机。 改进的用户体验使用户能够在保护其计算机的同时轻松执行日常任务。 通过禁止用户运行恶意软件,UAC 帮助企业管理员保护其网络。
新增功能和更改功能有哪些优点? 默认情况下,标准用户和管理员在标准用户的安全上下文中访问资源并运行应用程序。 当用户登录到计算机时,系统会为该用户创建一个访问令牌。 该访问令牌包含有关授予该用户的访问权限级别的信息,其中包括特定的安全标识符 (SID) 和 Windows 权限。
当管理员登录时,将为该用户创建两个单独的访问令牌:标准用户访问令牌和管理员访问令牌。标准用户访问令牌包含的用户特定信息与管理员访问令牌包含的信息相同,但是已经删除管理 Windows 权限和 SID。 标准用户访问令牌用于启动不执行管理任务的应用程序(标准用户应用程序)。 当用户运行执行管理任务的应用程序(管理员应用程序)时,会提示该用户将安全上下文从标准用户更改或“提升”为管理员,称为管理员批准模式。 在此模式下,管理员必须对使用管理权限在安全桌面上运行的应用程序进行审批。 在配置计算机以及对计算机进行故障排除时,Windows 7 和 Windows Server 2008 R2 中对 UAC 的改进会为您带来更好的用户体验。 减少的 UAC 提示数 Windows 7 和 Windows Server 2008 R2 减少了本地管理员和标准用户必须响应的 UAC 提示数。
减少本地管理员必须响应的提示数:

  • 已合并文件操作提示。
  • 已合并用于运行应用程序安装程序的 Internet Explorer 提示。
  • 已合并用于安装 ActiveX(R) 控件的 Internet Explorer 提示。

默认 UAC 设置允许标准用户执行以下任务而不会收到 UAC 提示:

    • 从 Windows Update 安装更新。
    • 安装从 Windows Update 下载的驱动程序或操作系统附带的驱动程序。
    • 查看 Windows 设置。 (但是,当更改 Windows 设置时,会提示标准用户提供提升的权限。)
    • 将 Bluetooth 设备与计算机配对。
    • 重置网络适配器并执行其他网络诊断和修复任务。

 

 

 

步骤简单:

可以在组策略中进行设置 —— “以管理员身份运行”方式打开命令提示符(CMD)后键入 gpedit.msc 打开组策略后作如下更改:
在“计算机配置”-“Windows 配置”-“安全设置”-“本地策略”-“安全选项”下:修改“用户帐户控制: 在管理审批模式下管理员的提升提示行为”选项为“不提示,直接提升”就不会再弹出提示框了。

posted @ 2012-12-19 11:23  wuli8129  阅读(1377)  评论(0编辑  收藏  举报