2013-12-16 63 views
0

我想通過vbscript添加一個管理單元,並且我一直有問題想要添加到控制檯中。它將在Windows 7環境中運行。如果有人能夠看到並指引我朝着正確的方向,我將非常感激。謝謝。使用vbscript腳本編寫MMC

<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> 
+0

到目前爲止你的代碼有什麼問題?你有錯誤嗎?如果是,在哪一行以及錯誤信息是什麼? – Helen

+0

objDoc.snapins.add(「本地計算機\非管理員」)無論我使用哪種管理單元,如果我關閉了錯誤陷阱,都會出現8000FFFF錯誤。 http://screencast.com/t/fQW9lOhb2w – roontoon

+0

我可能會補充說我可以加載組策略對象編輯器,但我想進一步配置該對象,以便我可以讓本地計算機\非管理員設置。有沒有辦法列出配置組策略對象的所有方法?通過這種編程,我有點不深,需要一些教育。 – roontoon

回答

1

「本地計算機\非管理員」只是系統提供的管理單元配置的描述。在這種情況下,實際的管理單元名稱是「組策略對象編輯器」。因此,要消除代碼更改

objDoc.snapins.add("Local Computer\Non-Administrators") 

的錯誤

objDoc.snapins.add("Group Policy Object Editor") 

不幸的是,這樣只會讓你儘可能MMC把一個「選擇組策略對象」對話框。然後您必須使用該對話框手動選擇您需要的配置。據我所知,沒有辦法提供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}"