在Windows Server 2008和Windows 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 配置”-“安全设置”-“本地策略”-“安全选项”下:修改“用户帐户控制: 在管理审批模式下管理员的提升提示行为”选项为“不提示,直接提升”就不会再弹出提示框了。

转载于:https://www.cnblogs.com/foxwu/archive/2012/12/19/2824642.html

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

  1. .NET Core 3.0 可卸载程序集原理简析

    文章转载授权级别:A       预计阅读时间:8分钟      损失发量:不好统计 因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很 ...

  2. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。...

    原文:C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件. 当某个程序集文件被载入AppDomain,该文件在AppDomain.Unloa ...

  3. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集...

    本博客中以"C#.Net 如何动态加载与卸载程序集(.dll或者.exe)"开头的都是引用莫问奴归处 微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有 ...

  4. 手工部署Sqlserver CLR程序集

    以前一直用VS部署Sqlserver CLR程序集简单省事,现在服务器部署在内网了,必须手动更新部署Sqlserver CLR程序集.     开始以为ALTER ASSEMBLY [程序集名称] F ...

  5. 学习笔记之卸载远程目标进程中的DLL模块(转)

    学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02) 转载▼ 学习笔记之卸载远程目标进程中的DLL模块2007/7/23 1.首先得把DLL模块中的线程结束 使用Cre ...

  6. 如何从 GAC 卸载程序集

    A. 使用 Windows 界面 导航到位于 %systemdrive%/Windows/Assembly 的 GAC. 右键单击在您的应用程序中包括的每个程序集文件,单击"卸载" ...

  7. 通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

    实现目的:动态加载dll,执行完毕之后可以随时卸载掉,并可以替换这些dll,以在运行中更新dll中的类. 其实就是通过应用程序域AppDomain加载和卸载程序集. 在这方面微软有篇文章http:// ...

  8. 部署好网站,同局域网中电脑无法访问的问题的解决方案

    "部署好网站,同局域网中电脑无法访问的问题的解决方案". 第一,Win7安装IIS后,本地测试没问题,说明IIS配置正确:如果本地测试有问题,先检查IIS安装配置情况. 第二,检查 ...

  9. 《架构系列四:一键部署应用到Tomcat集群中》

    <架构系列四:一键部署应用到Tomcat集群中> 基于前面的<架构系列三:使用Keepalived+Nginx+tomcat实现集群部署>,我们配置了nginx+Tomcat集 ...

最新文章

  1. java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
  2. 【数据结构】C++单链表实现多项式加法(直接输入多项式)
  3. tensorflow中关于vgg16的项目
  4. 从“void*”到指向非“void”的指针的转换要求显式类型转换错误
  5. android studio connot resolve
  6. 5.并发工具和执行器(Concurrency Utilities and Executors)5.1 并发工具介绍
  7. Linux服务器配置多台虚拟主机
  8. 原生WebView长截图 和 Tencent x5webview截长图
  9. 【系统架构】业务架构图
  10. Java根据模板导出PPT
  11. 用html给图片加像素,更改照片像素和大小
  12. freemarker word模板导出图片循环
  13. c++-派生类型与常量
  14. matlab和vc,Vc++和matlab双剑合璧
  15. Unity BIM模型导入调研
  16. 山东大学项目实训-地图圈系统-APP(2)
  17. C/C++字符数组的输入输出方式详解
  18. RenderDoc 调试web
  19. ECCV 2022 | 视频插帧中的实时中间流估计
  20. 微信小程序onLoad、onShow、onHide、onUnload区别

热门文章

  1. 四线接近开关接线图_135张图!开关、电机、断路器、电热偶、电表接线图大全!...
  2. 数组中只出现一次的数字+第一个只出现一次的字符
  3. linux多进程知识汇总
  4. sklearn训练模型保存与加载
  5. Dalvik控制VM详解
  6. 16.6 创建测试数据
  7. MongoDB 里面日期查询的问题
  8. 利用sqoop将hive数据导入导出数据到mysql
  9. JDBC获取新增记录的自增主键
  10. tomcat 系统访问日志配置