以前老的ATL组件供asp调用,里面用到了GetUserName API函数,得到的是账户是SYSTEM;
而我自己创建的ATL ActiveX server组件供asp调用得到的账户却是IUSER_COMPUTERNAME(因机器而异)我看了源代码,里面的ActiveX server对象的设置都是apartment,both Aggregation的,其idl文件和其它头文件和源文件没有明显的差别; 两个组件都是放在默认网站的bin目录下的。为什么会不一样呢,烦请高手解答!
而我自己创建的ATL ActiveX server组件供asp调用得到的账户却是IUSER_COMPUTERNAME(因机器而异)我看了源代码,里面的ActiveX server对象的设置都是apartment,both Aggregation的,其idl文件和其它头文件和源文件没有明显的差别; 两个组件都是放在默认网站的bin目录下的。为什么会不一样呢,烦请高手解答!
解决方案 »
- 如何在MFC环境中获取DOS进程退出的出错errorcode?
- VC++2005(8) 能开发基于.NET的Windows应用吗?
- 程序打包的问题:怎么设置能使从开始菜单启动的程序执行的路径和安装路径一样?
- 如何用函数改变基于对话框中控件的位置
- 两问,怎样打印直线,圆等图形?在Dialog中如何添加打印预览?
- 请问在VC6如何把某个MFC函数显示它的MFC层次结构出来?
- 用API编写菜单时,资源文件源代码该如何编写?
- 我在一个cpp文件中定义了一个类,我要在一个c文件中include这个类的.h文件,但老是编译通不过!
- VC+ADO数据库编程中遇到的问题!
- 怎么读取txt中一列的数字,然后保存到数组中?
- 基于opengl的管道设计问题?
- 请教如何在一个固定区域播放AVI动画?
普通ATL组件是IIS服务调用的,IIS服务的帐户是SYSTEM;
ATL SERVER组件是由具体的浏览器用户请求而被间接调用的,用户请求的调用使用的帐号是IUSER_xxxx。
并且我发现如果是ATL添加的是简单组件(simple object)的话,供asp调用后返回的是IUER_**** 。与添加ActiveX Server component供asp调用返回的值是一样的。按理说返回IUER_****是正常的,但是返回SYSTEM好像显得不正常。至于以前的组件为什么会返回SYSTEM,我觉得很纳闷。
Dim obj
set obj = Server.CreateObject("AspUpload.UploadFiles")
……
……
应该说两个组件的调用环境是一样的,都是放在默认网站下的。并且在asp代码中除了CreateObject()中的对象不一样外,其它的是一样的。组件应该是被服务调用的吧
我测试的两个如下:
single:返回的是SYSTEM
apartment:返回的是IUSER_****
free:返回的是SYSTEM
single和both下面没有测试过……