我想通过vbscript添加一个管理单元,但我在将管理单元添加到控制台时遇到了问题。它将在Windows 7环境中运行。如果有人能帮我看看,并指引我正确的方向,我将不胜感激。谢谢。
<code>
'Elevated privileges start
'Start of UAC workaround code
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
consoleName = "C:\Burnett.msc"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(consoleName) Then
Wscript.Echo "console already exists"
Else
On Error Resume Next
Set objMMC = CreateObject("MMC20.Application")
If err.Number <> 0 Then
Wscript.Echo "an error occurred. unable to create mmc console"
Wscript.Quit(0)
End If
objMMC.Show
Set objDoc = objMMC.Document
objDoc.snapins.add("Local Computer\Non-Administrators")
if err then
'Trap the error just after the statement where an error/exception can occur and handle it elegantly
msgbox("Snap-in Not found")
err.clear
end if
objDoc.ActiveView.StatusBarText = "Pane 1|Pane 2|Pane 3"
objMMC.UserControl = 1
objDoc.Name = consoleName
objDoc.Save()
End If
Set fso = Nothing
End If
</code>发布于 2015-05-20 08:11:56
“本地计算机\非管理员”只是系统为管理单元的特定配置提供的描述。在这种情况下,实际的管理单元名称是“组策略对象编辑器”。从而消除代码更改中的错误
objDoc.snapins.add("Local Computer\Non-Administrators")至
objDoc.snapins.add("Group Policy Object Editor")不幸的是,这只会让MMC弹出一个"Select Group Policy Object“对话框。然后,您必须使用该对话框手动选择所需的配置。据我所知,没有办法向Snapins.Add提供用于选择本地非管理员用户的参数。
下面的代码将完全自动化设置管理单元的过程。然而,它对SendKeys的依赖使它变得极其脆弱。它在我的系统上工作,但有一个很好的机会,你需要修改击键顺序和/或计时延迟,使其在你的系统上工作。一旦你让它工作了,就不能保证它会继续这样做,因为本地条件是可变的,并且会对时间产生很大的影响。
option explicit
if WScript.Arguments.Named.Exists("elevated") = false then
'Launch the script again with UAC permissions
CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
WScript.Quit
end if
Dim mmc : set mmc = WScript.CreateObject("MMC20.Application")
mmc.Show
mmc.UserControl = 1 'to keep MMC open
Dim oShell : set oShell = WScript.CreateObject("Wscript.Shell")
oShell.AppActivate "Console1"
WScript.Sleep 200
oShell.SendKeys "%f"
WScript.Sleep 200
oShell.SendKeys "m"
WScript.Sleep 400
oShell.SendKeys "group{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{TAB}{RIGHT}{TAB}Non{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{TAB}{TAB}{ENTER}"https://stackoverflow.com/questions/20622131
复制相似问题