以下是VB代码,改成c#,用Dllimport实现即可'在本例子里使用的是 ComCtl32.OCX,如果是其他,使用相应的名称 Private Declare Function RegComCtl32 Lib "ComCtl32.OCX" _ Alias "DllRegisterServer" () As Long Private Declare Function UnRegComCtl32 Lib "ComCtl32.OCX" _ Alias "DllUnregisterServer" () As Long Private Const ERROR_SUCCESS = &H0'使用:Private Sub Command1_Click() If RegComCtl32 = ERROR_SUCCESS Then MsgBox "Registration Successful" Else MsgBox "Registration Unsuccessful" End If
If UnRegComCtl32 = ERROR_SUCCESS Then MsgBox "UnRegistration Successful" Else MsgBox "UnRegistration Unsuccessful" End If End Su
Regsvr32这个文件就是调用楼上的api来注册的。
顶!只知道Regsvr32 /s you.dll来注册!
我也只知道用regsver32 来手动注册
lxcc(虫子) 的方法太麻烦了,搞了半天还没有写出来,哪位高手能否用c#写出来,最好写成通用的。 我暂时用下面的方法先用着 Process p = new Process(); p.StartInfo.FileName = @"RegSvr32.exe"; p.StartInfo.Arguments = @"/s D:\WorkShop\DLL\DSOFramer\dsoframer.ocx"; p.Start(); p.Close();
Private Declare Function RegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllRegisterServer" () As Long
Private Declare Function UnRegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllUnregisterServer" () As Long
Private Const ERROR_SUCCESS = &H0'使用:Private Sub Command1_Click()
If RegComCtl32 = ERROR_SUCCESS Then
MsgBox "Registration Successful"
Else
MsgBox "Registration Unsuccessful"
End If
If UnRegComCtl32 = ERROR_SUCCESS Then
MsgBox "UnRegistration Successful"
Else
MsgBox "UnRegistration Unsuccessful"
End If
End Su
我暂时用下面的方法先用着
Process p = new Process();
p.StartInfo.FileName = @"RegSvr32.exe";
p.StartInfo.Arguments = @"/s D:\WorkShop\DLL\DSOFramer\dsoframer.ocx";
p.Start();
p.Close();
用法:regsvcs.exe [options] AssemblyName
选项:
/? 或 /help 显示此用法信息。
/fc 查找或创建目标应用程序(默认)。
/c 创建目标应用程序,如果该程序已存在则出错。
/exapp 需要现有的应用程序。
/tlb:<tlbfile> 已导出类型库的文件名。
/appname:<name> 对目标应用程序使用指定的名称。
/parname:<name> 对目标分区使用指定的名称或 ID。
/extlb 使用现有的类型库。
/reconfig 重新配置现有的目标应用程序(默认)。
/noreconfig 不重新配置现有的目标应用程序。
/u 卸载目标应用程序。
/nologo 取消显示徽标。
/quiet 取消显示徽标和成功消息。
/componly 仅配置组件,不配置方法或接口。
/appdir:<path> 将应用程序根目录设置为指定路径。
============================================================
Regsvr32在注册表中作为命令组件注册 .dll 文件。语法
regsvr32 [/u] [/s] [/n] [/i[:cmdline]] DllName参数
/u
未注册服务器。
/s
指定 regsvr32 安静运行,且不显示任何消息框。
/n
指定不调用 DllRegisterServer。此选项必须与 /i 共同使用。
/i:cmdline
调用 DllInstall 将它传递到可选的 [cmdline]。在与 /u 共同使用时,它卸载 .dll。
DllName
指定要注册的 .dll 文件名。
/?
在命令提示符下显示帮助。
示例
要为“Active Directory Schema”注册 .dll,请键入:regsvr32 schmmgmt.dll格式化图例
格式 含义
斜体 用户必须提供的信息
粗体 用户必须准确键入的要显示的元素
省略号 (...) 在命令行中可多次重复的参数
中括号 ([]) 可选项
大括号 ({});选项用竖线 (|) 分隔。例如:{even|odd} 用户必须从选项集合中选择一个
Courier 字体 代码或程序输出
判断是否有 excel 的com对象
Type obzty =Type.GetTypeFromProgID("Excel.Application");
如果报错或 obzty 为null 那么就是计算机没有 你的那个 activex。com 组件都有个这个东西 “Excel.Application” 类似的可以根据 控件的路径 在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
下找到,找到会有版本什么的其他信息3,没有就用上面那些朋友的注册方法都可以了(不能每次启动都注册一次啊)。
即时用户重新作了系统也可以跑起来
不光能监测 com 组件
还能监测有没有 .net 环境。