如何从程序集文件夹中卸载 DLL?从 GAC 卸载 DLL 时权限被拒绝

如何从程序集文件夹中卸载 DLL?从 GAC 卸载 DLL 时权限被拒绝

我正在尝试从 Windows Server 2008 上的 C:\Windows\Assembly“文件夹”卸载 DLL,但收到“权限被拒绝”错误。如何在不卸载整个应用程序的情况下删除 DLL?

应用程序供应商向我发送了新的 DLL,但没有说明如何删除旧版本或添加新版本。Google 也没有像往常一样提供帮助...

答案1

以前这个方法没用过,不过幸好我上次尝试的时候成功了。想想看...

我发现工具程序在服务器上运行gacutil -u dllName.DLL 安装新的 DLL 很简单gacutil -i "PathAndFilenameOfNewDLL"

http://msdn.microsoft.com/en-us/library/zykhfde0%28VS.80%29.aspx

答案2

我知道我来晚了,但如果您没有 gacutil.exe,这里有另一个使用 Powershell 的解决方案。Gacutil 是一种开发工具,通常不存在于生产系统中。

使用提升的提示符启动 PowerShell,方法是右键单击它并选择“以管理员身份运行”。然后键入或复制/粘贴以下内容:

$pathToFile = 'PathAndFilename.dll'
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacRemove($pathToFile)

如果你想安装复制到 GAC,将最后一行改为:

$publish.GacInstall($pathToFile)

答案3

将 gacutil /u 放入 cmd 文件中,然后右键单击并选择以管理员身份运行。此方法有效,而其他所有建议均失败。

相关内容