相关疑难解决方法(0)

注册没有管理员权限/ regasm的.Net COM DLL

最近,我在C#中编写了一个类库,用于Office应用程序,包括约70人使用的关键Access应用程序.对于具有管理员权限的用户,注册DLL很简单,但让DLL在其他计算机上运行是有问题的.

注册DLL以使用管理员权限

  • 在Visual Studio中构建DLL.确保在项目的" 应用程序"选项卡上选择了这些选项:
    • 输出类型:类库
    • 装配信息:使装配COM可见:已检查
  • 使用提升的命令提示符注册程序集:
    • RegAsm YourDll.dll /tlb /codebase
  • YourDll.tlb在VBA中添加引用:工具 - >引用
  • 验证您是否可以创建对象的实例

怎么了?

Regasm在这里做了几件事.首先,它创建了一个类型库(YourDLL.tlb),它提供有关DLL中的类的信息.其次,它将有关库的信息存储在注册表中,以便系统"知道"当您要求将类实例化为对象时的含义.

要查看Regasm添加的注册表项,可以使用以下/regfile参数运行它:

Regasm YourDLL.dll /codebase /regfile

(该/regfile选项对/tlb参数无效.)

如果该/codebase选项告诉Regasm包含有关YourDLL.dll磁盘位置的信息,这对于创建对象很重要.

如果您YourDLL.reg在文本编辑器中打开,您将看到Regasm添加到注册表的条目:条目HKEY_Classes_Root(实际上只是重定向到HKLM\Software\Classes).不幸的是,您需要管理员权限才能修改HKLM,因此这对我们的其他用户无效.

还有一些其他线程(例如,注册没有管理员权限的COM,注册COM DLL供VBA使用,注册DLL(ActiveX)用于非管理员用户,无法注册.NET COM DLL,COM Interop没有regasm)讨论问题,但他们的解决方案是复杂的(例如需要注册表重定向)或不完整(假设你已经知道至少一半的答案)或不适用于混合64/32位环境(例如Win64,Office32).

那么如何在没有管理权限的情况下注册在Visual Studio中创建的COM DLL,以便在当前用户的VBA 32和64位环境中使用?

.net registry dll vba regasm

17
推荐指数
2
解决办法
7298
查看次数

在excel vba中使用VLC播放器activex作为免注册COM

问题定义

我有两个USB显微镜读数部分和序列号.我想控制Excel-VBA中屏幕截图的显示和记录.

我想尝试使用提供的VLC活动X组件.我需要整理产品是一个不需要安装的单拉链.我认为使用这个activex对象作为免注册COM是可行的方法.

参考

我一直在做我的作业,这里是我的参考.

如何在没有注册的情况下使用vlc.dll?

免注册COM互操作

VLC播放器和Excel Visual Basic编辑器

无法从VBA获得免注册COM

到目前为止我的尝试.

我创建了Desktop\excel vlc demo\excel vlc demo.xlsb然后我将整个vlc发行版复制到Desktop\excel vlc demo\vlc \

这包括axvlc.dll和axvlc.dll.manifest

我创建了一个模块并将此代码放入其中.

Sub VLC()
    Dim actCtx As Object
    Set actCtx = CreateObject("Microsoft.Windows.ActCtx")
    actCtx.Manifest = ThisWorkbook.Path & "\vlc\axvlc.dll.manifest"

    Dim myVlC As Object
    Set myVlC = actCtx.CreateObject("AXVLC.VLCPlugin2")

    myVlC.Visible = True
    myVlC.playlist.Add (ThisWorkbook.Path & "\demo.mov")
    myVlC.playlist.Play

End Sub
Run Code Online (Sandbox Code Playgroud)

这就失败了

    Set myVlC = actCtx.CreateObject("AXVLC.VLCPlugin2")
Run Code Online (Sandbox Code Playgroud)

有错误

    Run-time error '429':
    ActiveX component can't create object
Run Code Online (Sandbox Code Playgroud)

我可能有错误的对象名称"AXVLC.VLCPlugin2",我无法确认它是否仍然在文档中有效.

也可能是"user1610015"在说"我不认为你可以在这种情况下使无reg的COM工作"是正确的

在这一点上,我没有想法,我之前从未尝试过免费的COM,因此我不知道我是否在使用无reg的COM或axvlc部分做错了!

谢谢

编辑1:尝试早期绑定

我进入工具 - >引用,然后单击浏览并添加了axvlc.dll文件.我修改了代码如下(AXVLC.VLCPlugin2部分自动完成,所以至少这部分应该工作) …

excel vba vlc excel-vba

10
推荐指数
1
解决办法
1596
查看次数

标签 统计

vba ×2

.net ×1

dll ×1

excel ×1

excel-vba ×1

regasm ×1

registry ×1

vlc ×1