安装OCX控件的具体步骤如下:
我们需要准备的材料分别是:电脑、
以32位的电脑为例:
1、首先我们打开电脑,点击打开左下角的开始图标。
2、然后我们在d出来的窗口中点击打开“运行”。
3、然后我们在d出来的窗口中点击输入下图中的内容,回车确定即可。
public static class RegisterOcx{
private static string _systemDic = string.Empty
/// 检测是32bit or 64bit,进行对应位置注册。
/// 注册成功之后启动Pad
public static void RegisterOcxControl()
{
try
{
const string fileName = "dsoframer.ocx"
bool type = Environment.Is64BitOperatingSystem
_systemDic = Environment.SystemDirectory
if (type)
{
//64bit
_systemDic = _systemDic.Replace("system32", "SysWOW64")
}
_systemDic = _systemDic + "\\" + fileName
//是否存在
if (!File.Exists(_systemDic))
{
string libPath = AppDomain.CurrentDomain.BaseDirectory + "\\Libs\\" + fileName
File.Copy(libPath, _systemDic, true)
}
System.Threading.Thread thread = new System.Threading.Thread(DoRegistry)
thread.SetApartmentState(System.Threading.ApartmentState.STA)
thread.Start()
}
catch (Exception ex)
{
Logger.Error("RegisterOcxControl error" + ex.ToString())
throw
}
}
private static void DoRegistry()
{
try
{
//是否注册
//{00460182-9E5E-11d5-B7C8-B8269041DD57}对应的是空间的注册表中ClSID的值,每一个OCX空间CLSID都不一样。
//如果更换空间,则该值需要到注册表中查找,路径为:HKEY_CLASSES_ROOT\CLSID\{00460182-9E5E-11d5-B7C8-B8269041DD57}
RegistryKey registry = Registry.ClassesRoot.OpenSubKey("CLSID\\{00460182-9E5E-11d5-B7C8-B8269041DD57}\\")
if (registry == null)
{//没有注册时
new Command().Execute(string.Format(@"Regsvr32.exe {0}", _systemDic))
}
}
catch (Exception)
{
new Command().Execute(string.Format(@"Regsvr32.exe {0}", _systemDic))
}
}
}
32bit 和 64bit的差别是 注册路径"system32"替换成 "SysWOW64"。
new Command().Execute是执行cmd命令,用其他的方式执行cmd都可以
命令是:Regsvr32.exe {0} ,{0} 是注册的路径。
例如:
Regsvr32.exe "C:\Windows\SysWOW64\dsoframer.ocx"
regsvr32 好像有个\s命令,可以静默注册。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)