尝试在 Win2008 Server 中运行 regasm 时:
regasm "C:\Program Files\FooProg\Bar.dll" /tlb:"C:\Program Files\FooProg\Bar.tlb"
我收到以下错误:
RegAsm:错误 RA0000:保存导出的类型库时出错:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
这是什么意思
尝试在 Win2008 Server 中运行 regasm 时:
regasm "C:\Program Files\FooProg\Bar.dll" /tlb:"C:\Program Files\FooProg\Bar.tlb"
我收到以下错误:
RegAsm:错误 RA0000:保存导出的类型库时出错:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
这是什么意思
最有可能出现该错误是因为您无法删除相应的 .tlb 文件。另外两个建议:
您运行 regasm 的帐户无权写入 C:\Program Files\FooProg\,这就是 regasm 无法写入 .tlb 的原因。在具有管理员权限的帐户下运行 regasm。
您使用的帐户需要管理员权限。
在我的情况下,.dll 和 .tlb 文件都是只读的,删除只读检查对我有用,我也关闭了使用它的进程(Visual Studio IDE)。
我有一个流浪的 dllhost.exe 进程。杀死它允许我删除 .tlb 文件并重新注册。其他方法(停止 IIS、停止应用程序池、关闭所有 IDE)没有效果。
最有可能出现该错误是因为您无法删除相应的 .tlb 文件。其他两个建议: 1. 停止 IIS 并再次尝试注册: 2. 停止 IIS,从 DLL 文件所在的位置删除 .tlb 文件,然后再次尝试注册。
如果您未在/tlb参数中指定完整路径,您也可能会遇到此问题。
它会尝试写入C:\windows\system32. 即使您以管理员身份运行,默认情况下您也无权写入该目录。
解决方案只是在参数中提供完整路径(指向您有权访问的目录)/tlb。
由于某个进程挂接了您尝试注册或复制的 .dll 或 .tlb 文件,您很可能会收到错误消息。重新启动您的计算机并重试或删除 .tlb 文件并重新构建它以确保您可以访问它。
对我来说,文件正在被其他应用程序使用
首先,在 regasm 找到 dll 文件之前,我必须删除我的 dll 路径中的所有空格。
但是当我尝试在目标周围加上引号时,它仍然有效。
Win 7(如果已经是管理员) - 您可以通过右键单击并访问属性、安全选项卡、单击编辑、检查允许权限来启用文件权限,例如完全控制。