\ Inetpub \ Admin \ adsutil.vbs: Wie relativen Pfad C zu finden?
-
13-09-2019 - |
Frage
IIS 6 und ältere Schiffe mit einem Dienstprogramm Skript namens adsutil.vbs :
Adsutil.vbs ist eine IIS-Verwaltungs Dienstprogramm, das verwendet Microsoft Visual Basic Scripting Edition (VBScript) mit Active Directory Service Schnittstellen (ADSI) zu manipulieren, um die IIS-Konfiguration. Dieses Skript sollte ausgeführt werden CScript mit, das ist installiert mit Windows Script Host.
Mit anderen Worten: Mit diesem Tool können Sie ändern IIS-Metabasis Einstellungen programmatisch von der Kommandozeile.
Ich möchte dieses Werkzeug aus einem Installshield-Projekt aufrufen, um einige Änderungen an der Konfiguration von IIS zu machen. Ich bin gespannt, ob es entweder legal das Skript neu zu verteilen (es keine rechtliche Formulierung in der Quelle für sie ist) oder einfach starten Sie den Befehl über:
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs
und hofft, dass das Skript auf der Festplatte an dieser Stelle vorhanden ist.
Meine Frage ist also - es wird immer existiert in diesem Pfad oben, auch wenn einige andere Websites (inetpub Wurzeln) auf der Maschine auf einem Nicht-Systemlaufwerk befinden? Es scheint, all MSDN und anderen Microsoft-KB-Artikel, die zum ADSUTIL Werkzeug beziehen sich so durch das% Systemlaufwerk% Pfad oben.
Ich sehe, dass zumindest ein anderer Versuch, dies zu beschäftigen von sowohl cscript.exe und adsutil.vbs mit ihren Install Projekten zu verteilen.
Vielleicht gibt es einen Registrierungsschlüssel oder eine andere Methode, um die Position des Inetpub \ Admin Weg?
zu erhaltenVielleicht soll ich schreiben gerade eine C # .NET-Anwendung, die den Wert oder mein eigenes VBScript und mit meinen eigenen kleinen app verteilen statt?
Lösung 2
Ich arbeitete in JShumaker Antwort das Problem zu lösen. Der beste Weg scheint die folgende InstallScript- Funktion, die ich nenne eine Batch-Skript auszuführen:
prototype SetIISValues();
function SetIISValues()
string szProgram, szCmd;
begin
szProgram = TARGETDIR + "SetIISValues.bat";
szCmd = "";
LaunchAppAndWait (szProgram, szCmd, LAAW_OPTION_WAIT);
end;
Der Batch-Skript nennt dies:
@echo off
cscript.exe SetIISValues.vbs
Und das VBScript sieht wie folgt aus:
Option Explicit
Dim IIsObject
Set IIsObject = GetObject("IIS://localhost/w3svc/1")
IIsObject.Put "Name", "Value"
IIsObject.Setinfo
es auf diese Weise tun entlastet die Notwendigkeit adsutil.vbs als Teil der Installation zu verwenden, -. Die (relative) Pfad spielt es keine Rolle, wenn Sie benötigen es nicht verwenden
Andere Tipps
Ich lief in ein ähnliches Problem vor kurzem beschlossen, nur ein kleines bisschen Vbscript Nacharbeit in einer benutzerdefinierten Aktion in einem MSI-Installer zu verwenden. Es kann ein wenig nehmen den Kern wie adsutil.vbs tut Dinge, um herauszufinden, aber es ist deently gut writen. Zum Beispiel, ich brauchte einen Anwendungspool Classic statt integrierten Modus zu wechseln und stellen Sie es explizit in 32-Bit-Modus laufen zu lassen, wenn sie auf 64-Bit-Fenster, in destilliertem Form dies in dieser Folge:
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