DCOM远程激活的正确打开方式
一般步骤
cmd打开一个远程的会话:
runas /netonly /user:username /node:ip powershell
- username是远程计算机的一个用户
- ip是远程计算机ip地址
在新打开的powershell中执行远程激活DCOM:
$obj = [System.Activator]::CreateInstance([Type]::GetTypeFromCLSID(AppID,ip))
- AppID:要激活的COM对象组件的ID
- ip:远程计算机IP地址
在win7系统上一般是没有什么问题,而在win10及其以后的系统上,不出意外你就会得到这样的错误
PS C:\Windows\system32> $obj = [System.Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.154.151"))
使用“1”个参数调用“CreateInstance”时发生异常:“从计算机 192.168.154.151 中在 COM 类工厂内检索 CLSID 为 {9BA05972-F6A
8-11CF-A442-00A0C90A8F39} 的远程组件失败,原因是出现以下错误: 80070005 192.168.154.151。”
所在位置 行:1 字符: 1
+ $obj = [System.Activator]::CreateInstance([Type]::GetTypeFromCLSID('9 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : UnauthorizedAccessException
这是权限问题导致的拒绝访问,默认只允许Administrator用户远程激活。所以可以分为两种情况解决,一种是以Administrator用户进行远程激活,第二种是通过修改配置允许指定用户远程激活。
在此之前需保证本地策略组编辑器=》计算机配置=》Windows设置=》安全设置=》安全选项=》用户控制:以管理员批准模式运行所有管理员是已启用的。
以Administrator用户远程激活
管理员身份运行cmd,输入以下命令启用系统默认管理员账户
net user Administrator /active:yes
给Administrator用户设置一个登录密码
net user Administrator 123456
注意:此时远程计算机不能登录 A d m i n i s t r a t o r 用户,必须登录其他用户。如果远程计算机只有 A d m i n i s t r a t o r 用户,则需要新建一个用户,例如: t e s t 。 \textcolor{BrickRed}{注意:此时远程计算机不能登录Administrator用户,必须登录其他用户。如果远程计算机只有Administrator用户,则需要新建一个用户,例如:test。} 注意:此时远程计算机不能登录Administrator用户,必须登录其他用户。如果远程计算机只有Administrator用户,则需要新建一个用户,例如:test。
net user test /add
在远程计算机登录test用户的情况下,再重复一般步骤就不会报错了。
以指定用户远程激活
以test用户为例
-
需要将test用户加入到管理员组
net localgroup Administrators test /add
-
给test用户创建密码
net user test 123456
-
修改DCMO配置,运行dcomcnfg打开DCOM配置。选择组件服务=》计算机=》我的电脑,右键属性。选择COM安全,访问权限=》编辑限制,添加test用户,
并更改权限如下:
同理编辑默认值,添加test用户。然后是启动和激活权限=》编辑限制,添加test用户,并更改权限如下:
同理编辑默认值,添加test用户。
注意:和 A d m i n i s t r a t o r 用户不同的是,远程计算机必须登录到 t e s t 用户,才能远程激活成功。 \textcolor{BrickRed}{注意:和Administrator用户不同的是,远程计算机必须登录到test用户,才能远程激活成功。} 注意:和Administrator用户不同的是,远程计算机必须登录到test用户,才能远程激活成功。
在远程计算机登录test用户的情况下,再重复一般步骤就不会报错了。