2013-12-16 10 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 ("Local Computer \ Non-Administrators") 내가 사용하는 스냅인이 무엇이든지 오류 트랩을 종료하면 8000FFFF 오류가 발생합니다. http://screencast.com/t/fQW9lOhb2w – roontoon

+0

그룹 정책 개체 편집기를로드 할 수 있다고 추가 할 수 있지만 로컬 컴퓨터 \ 관리자가 아닌 관리자가 설정할 수 있도록 해당 개체를 추가로 구성하고 싶습니다. 그룹 정책 개체를 구성하는 모든 방법을 나열하는 방법이 있습니까? 나는 이런 종류의 프로그램으로 내 깊이에서 약간 벗어 났으며 약간의 학교 교육이 필요하다. – roontoon

답변

1

"로컬 컴퓨터 \ 비 관리자"는 스냅인의 특정 구성에 대한 시스템 제공 설명 일뿐입니다. 이 경우 실제 스냅인 이름은 "그룹 정책 개체 편집기"입니다. MMC는 "그룹 정책 개체 선택"대화 상자를 넣어 같이 따라서 불행하게도

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

에 코드를 변경

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

에서 오류를 제거하기 위해, 이것은 단지 지금까지 당신을 얻을 것이다. 그런 다음 해당 대화 상자를 사용하여 필요한 구성을 수동으로 선택해야합니다. 내가 아는 한 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}"