COM+ App 등록 자동화 스크립트(VBScript)

COM+ App 등록 자동화 스크립트(VBScript) | Other 2006-04-11 오전 9:16:28
우영식 (wooys) 우영식님께 메시지 보내기우영식님을 내 주소록에 추가합니다.우영식님의 개인게시판 가기 번호: 1065 / 평점: (9.0) / 읽음:540
COM+ 어플리케이션 등록을 자동화해 주는 스크립트(VBScript)입니다.
여러 대의 서버에 동일한 COM+ 어플리케이션을 등록해야 하는 작업에 이 스크립
트 사용하면 유용할 것입니다.
그리고 이 스크립트를 사용하면 COM+ 어플리케이션/구성요소의 모든 설정을 핸들링 할 수 있어
기존에 수작업으로 수행했던 COM+ 어플리케이션 등록 작업을 이 스크립트를 활용하면
COM+ 어플리케이션의 배포 툴로도 사용 가능합니다.
여러 대의 어플리케이션 서버로 구성되는 환경에서 동일한 어플리케이션 서버 설정 작업
을 반복적으로 수행하는데 활용 가능하면 됩니다.
아래는 위에서 설명한 vbscript 소스입니다.
================================================================================
'******************************************************************************
' Registers/unregisters a COM/.NET DLL as a COM+ app
'******************************************************************************
Option Explicit
UnInstallApplication "ApplicationName1"
InstallApplication "ApplicationName1", "Application1Description", 2, "Interactive User", "", 1, 0, -1, 2
InstallComponent "ApplicationName1", "C:프로그램소스abc.dll", "abc_Test111", 2, 4, -1, 4, 0, 0
'******************************************************************************
' Installs the Application
'******************************************************************************
' Activation(활성화 유형) : 0 - 라이브러리, 1 - 서버
' AccessChecksLevel(보안탭의 보안수준) : 0 - 프로세스 수준에서만 액세스 검사 수행, 1 - 프로세스 및 구성요소 수준에서 액세스 검사 수행
' ApplicationAccessChecksEnabled(보안탭의 권한부여) : -1 - 체크(이 응용프로그램에 대해 액세스 검사 수행), 0 - 언체크(이 응용프로그램에 대해 액세스 검사 수행 안함)
' Authentication(호출 인증 수준, 서버 타입의 경우에만 유효) : 1 - 없음, 2 - 연결, 3 - 호출, 4 - 패킷, 5- 패킷 무결성, 6 - 패킷 개인 정보
' ImpersonationLevel(가장 수준) : 1 - 익명, 2 - ID, 3 - 가장, 4 - 대리인
' Identity : Interactive User - 대화형 사용자, NT AUTHORITYLocalService - 로컬 서비스, NT AUTHORITYNetworkService - 네트워크 서비스, 다음 사용자 - ID 직접 입력
' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/comadmincollections_2ram.asp?frame=true 참조 : Application Level의 attribute 다 있음
Sub InstallApplication(ApplicationName, ApplicationDescription, Authentication, Identity, Password, Activation, AccessChecksLevel, ApplicationAccessChecksEnabled, ImpersonationLevel)
Wscript.Echo "Creating a new COM+ application:"
Wscript.Echo "- Creating the catalog object "
Dim cat
Set cat = CreateObject("COMAdmin.COMAdminCatalog")
wscript.echo "- Get the Applications collection"
Dim collApps
Set collApps = cat.GetCollection("Applications")
Wscript.Echo "- Populate..."
collApps.Populate
Wscript.Echo "- Add new application object"
Dim app
Set app = collApps.Add
Wscript.Echo "- Set app name = " & ApplicationName & " "
app.Value("Name") = ApplicationName
Wscript.Echo "- Set app description = " & ApplicationDescription & " "
app.Value("Description") = ApplicationDescription
' Encrypting communication
Wscript.Echo "- Set encrypted COM communication = true "
app.Value("Authentication") = 6
' 실행프로세스의 아이디/패스워드 설정
' app.Value("Identity") = "MyDomainMyUser"
' app.Value("Password") = "123"
app.Value("Identity") = Identity
app.Value("Password") = Password
' 활성화 타입 설정(0 - 라이브러리, 1 - 서버)
app.Value("Activation") = Activation
app.Value("AccessChecksLevel") = 1
' Only roles added below are allowed to call in.
Wscript.Echo "- Set app access check = true "
app.Value("ApplicationAccessChecksEnabled") = 1
' Secure references
Wscript.Echo "- Set secure references = true "
' app.Value("AuthenticationCapability") = 2
' Do not allow impersonation
Wscript.Echo "- Set impersonation = false "
app.Value("ImpersonationLevel") = ImpersonationLevel
Wscript.Echo "- Save changes..."
collApps.SaveChanges
' wscript.echo "Secure the COM+ application:"
' wscript.echo "- Get roles collection"
' Dim collRoles
' Set collRoles = collApps.GetCollection("Roles", app.Key)
' wscript.echo "- Populate..."
' collRoles.Populate
' wscript.echo "- Add new role"
' Dim role
' Set role = collRoles.Add
' wscript.echo "- Set name = Administrators "
' role.Value("Name") = "Administrators"
' wscript.echo "- Set description = Administrators group " role.Value("Description") = "Administrators group"
' wscript.echo "- Save changes ..."
' collRoles.SaveChanges
' ' Add users into role '
' wscript.echo "Granting user permissions:"
' Dim collUsersInRole
' Set collUsersInRole = collRoles.GetCollection("UsersInRole", role.Key)
' wscript.echo "- Populate..."
' collUsersInRole.Populate
' wscript.echo "- Add new user"
' Dim user
' Set user = collUsersInRole.Add
' wscript.echo "- Set user name = .Administrators"
' user.Value("User") = ".Administrators"
' wscript.echo "- Add new user"
' Set user = collUsersInRole.Add
' wscript.echo "- Set user name = Local SYSTEM "
' user.Value("User") = "SYSTEM"
' wscript.echo "- Save changes..."
' collUsersInRole.SaveChanges
Wscript.Echo "Done."
End Sub
'******************************************************************************
' Uninstalls the Application
'******************************************************************************
Sub UninstallApplication(ApplicationName)
Wscript.Echo "Unregistering the existing application..."
wscript.echo "- Create the catalog object"
Dim cat
Set cat = CreateObject("COMAdmin.COMAdminCatalog")
wscript.echo "- Get the Applications collection"
Dim collApps
Set collApps = cat.GetCollection("Applications")
wscript.echo "- Populate..."
collApps.Populate
wscript.echo "- Search for " & ApplicationName & " application..."
Dim numApps
numApps = collApps.Count
Dim i
For i = numApps - 1 To 0 Step -1
If collApps.Item(i).Value("Name") = ApplicationName Then
collApps.Remove(i)
WScript.echo "- Application " & ApplicationName & " removed!"
End If
Next
wscript.echo "- Saving changes..."
collApps.SaveChanges
Wscript.Echo "Done."
End Sub
'******************************************************************************
' installs the Component
'******************************************************************************
' ApplicationDll : 경로를 포함한 DLL명
' Transaction : 0 - Disabled, 1 - Not Supported, 2 - Supported, 3 - Required, 4 - Requires New
' TxIsolationLevel(트랜잭션 격리 수준) : 0 - 모두, 1 - 커밋되지 않은 읽기, 2 - 커밋된 읽기, 3 - 반복할 수 있는 읽기, 4 - 연속됨
' JIT : -1 - JIT 활성화 사용, 0 - JIT 활성화 사용하지 않음
' Synchonization : 0 - 사용 안함, 1 - 지원하지 않음, 2 - 지원함, 3 - 필수, 4 - 새트랜잭션 필요
' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/comadmincollections_2ram.asp?frame=true 참조 : 컴포넌트 레벨의 attribute 다 있음
Sub InstallComponent(ApplicationName, ApplicationDLL, Description, Transaction, TxIsolationLevel, JIT, SYN, ComponentAccessChecksEnabled, ObjectPoolingEnabled)
Dim cat
Set cat = CreateObject("COMAdmin.COMAdminCatalog")
Dim collApps, App
Set collApps = cat.GetCollection("Applications")
collApps.Populate
Dim numApps, numComponents
numApps = collApps.Count
Dim i, j
Dim components, component
Wscript.Echo "DLL 등록..."
For i = numApps -1 To 0 Step -1
' Wscript.Echo collApps.Item(i).Value("Name")
If collApps.Item(i).Value("Name") = ApplicationName Then
' Wscript.Echo collApps.Item(i).Value("Name")
Set App = collApps.Item(i)
cat.InstallComponent App.Value("ID"), ApplicationDLL , "", ""
' Set components = collApps.GetCollection("Components", App.Value("ID"))
' components.Populate
' Set component = components.Add
' 컴포넌트가 속한 Applicatin을 Application ID로 설정
Set components = collApps.GetCollection("Components", App.Value("ID"))
components.Populate
numComponents = components.Count
For j = numComponents - 1 To 0 Step -1
If components.Item(j).Value("DLL") = ApplicationDLL Then
Set component = components.Item(j)
End if
Next
' component.Value("ApplicationID") = App.Value("ID")
' 컴포넌트의 DLL명(경로 포함)
' component.Value("DLL") = ApplicationDLL
component.Value("Description") = Description
component.Value("Transaction") = Transaction
component.Value("TxIsolationLevel") = TxIsolationLevel
component.Value("JustInTimeActivation") = JIT
component.Value("Synchronization") = SYN
component.Value("ComponentAccessChecksEnabled") = ComponentAccessChecksEnabled
component.Value("ObjectPoolingEnabled") = ObjectPoolingEnabled
components.SaveChanges
End If
Next
End Sub

[출처] COM+ App 등록 자동화 스크립트(VBScript)

by 바다777 | 2007/09/14 00:40 | 프로그래밍 | 트랙백 | 덧글(0)

트랙백 주소 : http://nadobest.egloos.com/tb/9589057
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

<< 이전 페이지다음 페이지 >>