WMI Win32_Process.Create失败,权限不足

时间:2009-04-20 05:28:16

标签: .net security vbscript wmi win32-process

我正在尝试通过调用Win32_Process类在vbscript中的远程Windows服务器上运行一个简单的cmd实用程序,如下所示:

serverIP = "10.0.0.3"
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & serverIP & "\root\cimv2:Win32_Process")
RunCommand = "cmd.exe /c echo hello >c:\hello.txt"
wscript.echo RunCommand
intReturn = oWMI.Create(RunCommand, Null, Null, intProcessID)  
wscript.echo intReturn
Select Case intReturn
        Case 0 Wscript.Echo "Successful"
        Case 2 Wscript.Echo "Access denied"
        Case 3 Wscript.Echo "Insufficient privilege"
        Case 8 Wscript.Echo "Unknown failure"
        Case 9 Wscript.Echo "Path not found"
        Case 21 Wscript.Echo "Invalid parameter"
        Case Else Wscript.Echo "Unable to execute for unknown reason"
End Select

这总是因为privs不足而失败(返回码3)。

谁能看到我做错了什么?该脚本是从作为域管理员调用的cmd会话运行的,因此它应该可以正常工作,除非有一些我不完全理解的WMI安全性。

可能会有人建议PSEXEC。我知道它,可能会回到它。但这似乎是一个可解决的问题,我宁愿不为这个脚本创建对外部可执行文件的依赖。

我会提到一些我尝试过的事情。

  • 如果未加载配置文件,则可能会出现问题says。即使主叫用户(域管理员)登录到两个系统,我也遇到同样的问题。
  • 在这个thread中,Richard Mueller指出应该指定impersonationlevel = impersonate和authenticationlevel = Pkt。我试过了。仍然没有。
  • 在这个page上,似乎应该指定绰号中需要的NT rights。我已经尝试指定SeInteractiveLogonRight,SeNetworkLogonRight,SeBackupPrivilege,SeRestorePrivilege,SeDebugPrivilege和SeChangeNotifyPrivilege。什么都没有用。

我在谷歌搜索中注意到的一个共同点是人们看到一些目标计算机的这个问题,而不是其他人。因此,在我看来,根本上缺少的是完成此任务所需的安全权限的完全细分。棒棒糖将被感激地发送给任何能够明确提供此类故障的人!

徒劳地希望它会增加收视率,我将在这里添加.net标签,因为.net人经常处理相同的WMI问题并且可能有洞察力。

噢。凹凸不平,这不会成为tumbleweed吗?

4 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。来自的建议 http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/305557c4-df94-4d92-85bf-a049c83f120c帮助了我。简而言之:确保将LOCAL SERVICE和NETWORK SERVICE帐户授予“替换进程级令牌”(SeAssignPrimaryTokenPrivilege)。

答案 1 :(得分:1)

  

在这个页面上,似乎应该指定名字对象中所需的NT权限。我已经尝试指定SeInteractiveLogonRight,SeNetworkLogonRight,SeBackupPrivilege,SeRestorePrivilege,SeDebugPrivilege和SeChangeNotifyPrivilege。没有任何效果。

请注意,如果您尝试使用上面列出的权限字符串(直接来自NT权限),那将无效。您应该使用WMI Security Settings

表6.8中显示的名字对象权限

(但是,如果您已经是域管理员,并且您只是尝试使用cmd.exe echo>文件,那几乎肯定不是问题)

答案 2 :(得分:0)

您是否在服务器端的日志事件中找到有关错误的更多信息。这有助于诊断访问权限错误,或尝试使用 FileMon 监控访问权限。

答案 3 :(得分:0)

查看MS Technet上的详细页面,摘自书籍"Advanced VBScript for Microsoft Windows Administrators"具体是“第6章:远程脚本” 作者:Don Jones和Jeffery Hicks“并包含有关确保为远程脚本正确配置目标设备的详细信息。

同时查看c:\ winnt \ system32 \ WBEM \ logs \ wmiprov.txt我打赌你看到的是这样的:

(Mon Jun 01 16:57:19 2009.2x) : ***************************************
(Mon Jun 01 16:57:19 2009.2x) : Could not get pointer to binary resource for file:
(Mon Jun 01 16:57:19 2009.2x) : C:\WINNT\system32\DRIVERS\wmiacpi.sys[MofResource](Mon Jun 01 16:57:19 2009.2x) : 
(Mon Jun 01 16:57:19 2009.2x) : ***************************************