代码之家  ›  专栏  ›  技术社区  ›  quux

wmi win32_process.create失败,权限不足

  •  1
  • quux  · 技术社区  · 15 年前

    我试图通过调用 Win32_Process 班级,就像这样:

    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
    

    在没有足够权限的情况下总是失败(返回代码3)。

    有人知道我做错了什么吗?脚本是从作为域管理员调用的cmd会话运行的,因此它应该可以正常工作,除非有关于wmi安全性的问题我不完全理解。

    可能会有人推荐psexec。我意识到了这一点,可能会回到过去。但这似乎是一个可以解决的问题,我不想为这个脚本创建对外部可执行文件的依赖。

    我要提几件我试过的事。

    • 这个家伙 says 如果未加载配置文件,则可能会出现问题。我有同样的问题,即使调用用户(一个域管理员)登录到两个系统。
    • 在这 thread ,richard mueller注意到应该同时指定impersonationlevel=impersonate和authenticationlevel=pkt。我试过了。还是不行。
    • 关于这个 page 似乎应该说明 NT rights 在名字中需要。我已尝试指定seinteractivelogonright、senetworklogonright、sebackupprivilege、serestoreprivilege、sedebugprivilege和sechangenotifyprivilege。什么都没用。

    我在google上注意到的一个共同点是,人们在某些目标计算机上看到了这个问题,而在其他计算机上则没有。所以在我看来,根本上缺少的是完成这项任务所需要的安全特权的全面崩溃。一个棒棒糖将被感激地发送给谁可以提供这样一个明确的崩溃!

    我将在这里添加.net标记,因为.net的用户经常处理相同的wmi问题,并且可能有洞察力,所以我希望它能增加收视率。

    AWWW。坎普,这不会成为 tumbleweed 它是?

    4 回复  |  直到 7 年前
        1
  •  2
  •   Maxim Vuets    14 年前

    我也有类似的问题。来自的建议 http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/305557c4-df94-4d92-85bf-a049c83f120c 帮助了我。简单:确保本地服务和网络服务帐户被授予“替换进程级令牌”(seassignprimarytokenprivilege)。

        2
  •  1
  •   Daryn Malkus    15 年前

    在这个页面上,似乎应该指定名字对象中所需的NT权限。我已尝试指定seinteractivelogonright、senetworklogonright、sebackupprivilege、serestoreprivilege、sedebugprivilege和sechangenotifyprivilege。什么都没用。

    注意,如果您试图使用上面列出的特权字符串(直接从NT权限中),这将不起作用。您应该使用表6.8所示的名字对象特权 WMI Security Settings

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

        3
  •  0
  •   lsalamon    15 年前

    是否在服务器端找到有关日志事件错误的详细信息。此帮助诊断访问权限故障,或尝试使用 FileMon .

        4
  •  0
  •   unrealtrip    15 年前

    查看这本书摘录的微软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) : ***************************************