看了下面这个帖子
http://community.csdn.net/Expert/topic/3170/3170015.xml?temp=.4227411
详细步骤!
1、首先在VB中写一ActiveX(DLL)组件,工程名为COMTEST。编译后在另一程序中调用,确认组件工作正常。
2、打开“控制面板/管理/组件服务”,在“COM+应用程序”下利用“COM+应用程序安装向导”创建一个空的COM+应用程序,名称为“COMTEST”。
3、在“COMTEST”下,新建“组件”,在“组件安装向导”中,选择“安装新组件”(注意:不要使用“导入已被注册的组件”),然后将生成的dll及tlb都添加进来(两个文件都要!),完成。
4、右击“COM+应用程序”上方的“我的电脑”,选择“属性”,然后在“属性”对话框中的“默认属性”页下,将“默认身份验证级”改为“无”,将“默认模拟级别”改为“匿名”,然后在“默认安全设置”页下的默认启动权限里添加"Everyone",确定。(这里是匿名关键之一)
5、在本地用户管理里启用Guest用户!(这就是有人说权限里设置了Everyone仍然无法访问的原因)
6、右击“COMTEST”,导出客户端的“应用代理”。注意:在导出对话框中,必须选择“应用程序代理”而不是“服务器应用程序”!并将导出的文件在客户机安装!
7、好了!现在就可以在客户端进行调用了,点击运行后第一次运行在数秒弹出希望看到的运行结果,在激活服务器的准备状态以后的运行通常都在半秒内响应完成!(注:VB状态下加垃圾机器)安装上面的步骤进行处理,确实可以达到部分远程匿名访问的目的。但是有些方法还是不能访问。
我的服务组件中包含下面三个方法,
Public Function TestFun(rstResult As ADODB.Recordset) As Integer
    Dim i As Integer
    Set rstResult = New ADODB.Recordset
    rstResult.CursorLocation = adUseClient
    rstResult.Fields.Append "KHBH", adVarChar, 8
    rstResult.Fields.Append "KHMC", adVarChar, 100
    rstResult.Open
    rstResult.AddNew
    rstResult.Fields("KHBH") = "12345678"
    rstResult.Fields("KHMC") = "测试信息"
    rstResult.Update
    rstResult.MoveFirst
    
    i = 100
    TestFun = i
End FunctionPublic Function GetFun(ByRef iRet As Integer) As Integer
    iRet = 100
    GetFun = 50
End FunctionPublic Function RetFun() As Integer
    RetFun = 500
End Function//*********************************************
客户端代码如下:
dim obj as Object
set Obj = CreateObject("ComTest.clsTest", "Server")
dim i as integer, j as integer
dim rstResult as new adodb.recordseti = obj.RetFun()
debug.print ii = obj.GetFun(j)
debug.print i
debug.print ji = obj.TestFun(rstResult)
debug.pring rstResult.Recordcount
//**********************************************
第一和第二的方法的执行很正常,可以得到对应的值,当调用
i = obj.TestFun(rstResult) 时,确报告“Run-time error '70' Permission denied 错误。
请高手解答如何处理