2009-08-11 6 views
4

ADSUTIL.VBS라는 유틸리티 스크립트와 6 세 배를 IIS :C : Inetpub AdminScripts ADSUTIL.VBS의 상대 경로를 찾는 방법은 무엇입니까?

Adsutil.vbs를 마이크로 소프트를 사용하는 IIS 관리 유틸리티입니다 비주얼 Basic 스크립트 버전 (VBScript) Active Directory 서비스 인터페이스 (ADSI)와 IIS 구성을 조작 할 수 없습니다. 이 스크립트는 인 Windows 스크립트 호스트와 함께 설치된 CScript를 사용하여 실행해야합니다 ( ).

즉,이 도구를 사용하면 IIS metabase 설정을 프로그래밍 방식으로 명령 줄에서 변경할 수 있습니다.

IIS의 구성을 일부 변경하려면 InstallShield 프로젝트에서이 도구를 호출하고 싶습니다.

CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs 

하고 스크립트가 있다는 점에서 디스크에 존재하는 것을 희망한다 : 그것은 스크립트를 다시 배포 할 법률 (그것의 소스 내부의 법적 표현 없음) 중 하나 또는 단순히 통해 명령을 실행하는 경우 궁금 해요 위치.

내 질문은입니다. 시스템의 다른 웹 사이트 (inetpub root)가 시스템 드라이브가 아닌 곳에 있더라도 위 경로에 항상 표시됩니까? 위의 % SYSTEMDRIVE % 경로를 사용하여 ADSUTIL 도구를 참조하는 모든 MSDN 및 기타 Microsoft 기술 자료 문서를 참조하십시오.

적어도 one other attempt to deal with this은 cscript.exe와 adsutil.vbs를 InstallShield 프로젝트와 함께 배포함으로써 알 수 있습니다.

아마도 Inetpub \ AdminScripts 경로의 위치를 ​​가져 오기위한 레지스트리 키 또는 다른 방법이 있습니까?

어쩌면 나는 C# application that changes the value 또는 my own VBScript을 작성하고 대신 내 자신의 작은 응용 프로그램으로 배포해야합니까?

답변

1

I을 이 문제를 해결하기 위해 JShumaker's answer에서 근무했습니다.

prototype SetIISValues(); 
function SetIISValues() 
    string szProgram, szCmd; 
begin        
    szProgram = TARGETDIR + "SetIISValues.bat"; 
    szCmd = ""; 
    LaunchAppAndWait (szProgram, szCmd, LAAW_OPTION_WAIT); 
end; 

배치 스크립트는이 호출 :

@echo off 
cscript.exe SetIISValues.vbs 

을 그리고 VBScript를은 다음과 같습니다

Option Explicit 
Dim IIsObject 
Set IIsObject = GetObject("IIS://localhost/w3svc/1") 
IIsObject.Put "Name", "Value" 
IIsObject.Setinfo 
가장 좋은 경로는 내가 배치 스크립트를 실행하려면 호출하는 다음의 InstallScript 함수를 것 같다

이렇게하면 설치 과정에서 ADSUTIL.VBS를 사용할 필요가 없어집니다. 사용하지 않아도 관계가없는 ADSUTIL.VBS 경로가 있습니다.

3

최근 비슷한 문제가 발생하여 msi 설치 프로그램에서 사용자 지정 작업에 사용할 작은 vbscript를 다시 작성하기로 결정했습니다. adsutil.vbs가 일을하는 방식의 핵심을 파악하는 데 약간 시간이 걸릴 수 있지만 정교하게 잘 작성되어 있습니다. 예를 들어, 내가 대신 통합 모드의 클래식에 응용 프로그램 풀을 전환하는 데 필요한 64 비트 윈도우에, 증류수 형태는이했을 때 명시 적으로 32 비트 모드로 실행하도록 설정 :

Option Explicit 

Dim IIsObject 
Set IIsObject = GetObject("IIS://LocalHost/W3SVC/AppPools/TestPool") 
IIsObject.Put "ManagedPipelineMode", 1 
IIsObject.Setinfo 
IIsObject.Put "Enable32BitAppOnWin64", CBool("True") 
IIsObject.Setinfo
+0

나는 미끼를 타고 대신 그 길을 가야한다고 생각한다. (내 자신의 vbscript를 써서 배포하라.) 나는 내 자신의 답변을 게시하고 제안을 신용 할 것이다. –

관련 문제