你可以在程序中调用Regsvr32 /s you.dll来注册,不管对方机子是否已经注册了,这样不会弹出注册成功的窗口

解决方案 »

  1.   

    以下是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
      

  2.   

    Regsvr32这个文件就是调用楼上的api来注册的。
      

  3.   

    顶!只知道Regsvr32 /s you.dll来注册!
      

  4.   

    我也只知道用regsver32 来手动注册
      

  5.   

    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();
      

  6.   

    补充一下regsvcs.exe 命令
    用法: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 字体 代码或程序输出 
      

  7.   

    1,监测的这个程序一定要不能引用  你要监测的那个 activex 否则起不来程序2,启动程序后 执行:如
    判断是否有 excel 的com对象
    Type obzty =Type.GetTypeFromProgID("Excel.Application");
    如果报错或 obzty 为null 那么就是计算机没有 你的那个 activex。com 组件都有个这个东西 “Excel.Application” 类似的可以根据 控件的路径 在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
    下找到,找到会有版本什么的其他信息3,没有就用上面那些朋友的注册方法都可以了(不能每次启动都注册一次啊)。
      

  8.   

    建议用 VC,Delphi 写这种东西,
    即时用户重新作了系统也可以跑起来
    不光能监测 com 组件
    还能监测有没有 .net 环境。