关于用ATL写的COM(ASP调用的)一个奇怪的问题

Fzyan 2003-08-21 08:41:39
初次用VC中的ATL写COM组件(ActiveX Server Component),遇到一个奇怪的问题。

COM在系统中注册后,在ASP页面中调用,必须得在IIS中设置这个页面所在目录的目录访问权限, 而且还得设定的比较高的权限(超级管理员级别)才能运行。如果用默认的那个用户IUSR_..还不行,有没有什么办法不要这样呢,因为设定了目录的访问权限,其他用户访问的时候都得输入用户和密码,就是开始设定的那个。这样很不安全。

iusr_是IIS的默认的执行帐号,但是这个帐号不能执行那个写的COM,只有admin权限的才可以。
但是对于每个用户访问页面的时候都要输入admin权限的帐号,对系统来说是多么的不安全。

更具体的情况是这样的。这个实际是和我们自己系统的一个在web方面的接口,这个COM把我们自己系统内部定义的内部通讯和访问数据库的函数操作封装起来了,需要调用其他几个封装了系统一些公共接口的dll,但是这些dll不是COM。
我想就是因为这个引起的。

...全文
26 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weseen 2003-08-22
  • 打赏
  • 举报
回复
我也遇到这样的问题,不过有很多种解决方法,这个方法最简单实用:
======================================================================
IIS has one small problem. when the rights of the IUSR_<<machine_name>> changes, IIS doesn't seem to refresh these in its database. So, what happens is, even after the rights of these accounts have been modified on the domain controller, IIS continues with thse settings. So, when actual authentication happens with the domain server, it fails. I think that's what has happened in ur case also. what u could do is, go to Intyernet Services Manager. Go to Default Web Site properties -> Directory Security -> Anonymous Access User Account section. Select an account different from IUSR_<<machine_name>> and click on apply to close the properties box. Again open the same box and use the browse button to select IUSR_<<machine_name>> as the account to be used for anonymous access. Stop ur IIS services and start them once. This shd solve ur problem. Good Luck !!!
===============================================================================

这篇原文出自:http://www.experts-exchange.com/Web/Web_Languages/Q_20366335.html
Fzyan 2003-08-22
  • 打赏
  • 举报
回复
顶一顶。谢谢。
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧