不通过注册表使用ActiveX对象

为了弄清楚COM库的运行原理,特意做了这个实验:

#include "stdafx.h"
#include "objbase.h"
#include "atlcomcli.h"
#include "limits"
//#include "commctrl.h"
#import "msscript.ocx" no_namespace
extern "C"{ typedef HRESULT (__stdcall *FuncDllGetClassObject)(REFCLSID rclsid,REFIID riid,LPVOID * ppv);}
struct IScriptControl;
int _tmain(int argc, _TCHAR* argv[])
{
try
{
  ::CoInitialize (NULL);
  HMODULE h=::LoadLibrary("msscript.ocx");
  if(h==NULL)return 0;
  FuncDllGetClassObject func=(FuncDllGetClassObject)::GetProcAddress(h,"DllGetClassObject");
  if(func==NULL)return 0;
  IClassFactory *pFactory=NULL;
  func(__uuidof ( ScriptControl ),IID_IClassFactory,(void**)&pFactory);
  if(pFactory==NULL)return 0;
  IScriptControl *pScript=NULL;
  //pFactory->QueryInterface(__uuidof(IScriptControl) , (void**)&pScript);
  //0e59f1d3-1fbe-11d0-8ff2-00a0d10038bc
  //IID id;//=__uuidof(IScriptControl);
  IID id;
  id.Data1=0x0e59f1d3;
  id.Data2=0X1fbe;
  id.Data3=0X11d0;
  id.Data4[0]=0X8f;
  id.Data4[1]=0Xf2;
  id.Data4[2]=0X00;
  id.Data4[3]=0Xa0;
  id.Data4[4]=0Xd1;
  id.Data4[5]=0X00;
  id.Data4[6]=0X38;
  id.Data4[7]=0Xbc;
  //pFactory->CreateInstance(NULL,__uuidof(IScriptControl) , (void**)&pScript);
  pFactory->CreateInstance(NULL,id , (void**)&pScript);
  pFactory->Release();
  pScript->put_AllowUI(VARIANT_FALSE);
  pScript->PutLanguage(L"JScript");
  _variant_t v=pScript->Eval("1+2+3+4+5");
  int i=pScript->Release();
  ::FreeLibrary(h);
  ::CoUninitialize();
  return 0;
}
catch(...)
{
  //::FreeLibrary(h);
  ::CoUninitialize();
}
}
时间: 2024-08-07 04:04:50

不通过注册表使用ActiveX对象的相关文章

28. PowerShell -- 注册表操作

PowerShell注册表之:几条重要的操作命令 你可以像导航文件系统那样来访问注册表,PowerShell把文件系统和注册表都当作层次信息系统来处理.注册表中的键对应于文件系统的目录,但是键对应的值和文件系统中的文件不是非常类似.相反的,它们显示在属性栏,被以键的属性来管理. PS C:\> Cd HKCU: PS HKCU:\> dir     Hive: HKEY_CURRENT_USER Name                           Property ----     

c#注册表对象映射

用于快捷保存与读取注册表,为对应的对象 示例 [RegistryRoot(Name = "superAcxxxxx")] public class Abc : IRegistry { public string Name { get; set; } public int Age { get; set; } } 保存 Abc a = new Abc { Name = "mokeyish", Age = 100 }; RegistryKey register = Reg

WPS显示无法创建对象,请确认对象已在系统注册表中注册

第一种方法:在系统的开始--所有程序找到WPS--WPS office工具--配置工具--高级--兼容设置,在这里勾选兼容第三方系统和软件. 第二种方法: xp/win7系统:拷贝packager.exe到系统目录如C:\windows\system32 第三种方法: 点击“开始-运行”,输入:regedit 进入注册表 1.HKEY_CURRENT_USER\Software\Kingsoft\Office 选中office,点击右键-删除 2.HKEY_LOCAL_MACHINE\SOFTW

[荐]使用Js操作注册表

使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问系统文件夹.

C#综合揭秘——通过修改注册表建立Windows自定义协议

引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对注册表进行修改的情况最为常见,在一般的应用程序中都会涉及.当中最为实用的例子将介绍如何通过"安装项目"修改注册表建立自定义协议,在页面通过ajax方式发送路径请求,并在回调函数中调用自定义协议.最后一节还将介绍如何调用自定义协议去保持数据的保密性.希望本篇文章能对各位的学习研究有所帮助,当

【转】C#综合揭秘——通过修改注册表建立Windows自定义协议

引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对注册表进行修改的情况最为常见,在一般的应用程序中都会涉及.当中最为实用的例子将介绍如何通过"安装项目"修改注册表建立自定义协议,在页面通过ajax方式发送路径请求,并在回调函数中调用自定义协议.最后一节还将介绍如何调用自定义协议去保持数据的保密性.希望本篇文章能对各位的学习研究有所帮助,当

delphi 注册表操作(读取、添加、删除、修改)完全手册

DELPHI VS PASCAL(87)  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create: 2.释放TRegistry对象.对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy. 二.指定要操作的键 操作注册表时,首先应指定操作的主键:先给属性R

注册表命令大全

注册表命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机3. Nslookup-------IP地址侦测器4. explorer-------打开资源管理器5. logoff---------注销命令6. tsshutdn-------60秒倒计时关机命令7. lusrmgr.msc----本机用户和组8. services.msc---本地服务设置9. oobe/msoobe /a----检查XP是否激活10. notepad--------打开记

通过修改注册表建立Windows自定义协议

引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对注册表进行修改的情况最为常见,在一般的应用程序中都会涉及.当中最为实用的例子将介绍如何通过"安装项目"修改注册表建立自定义协议,在页面通过ajax方式发送路径请求,并在回调函数中调用自定义协议.最后一节还将介绍如何调用自定义协议去保持数据的保密性.希望本篇文章能对各位的学习研究有所帮助,当