كيفية العثور على المسار النسبي إلى C: inetpub adminscripts adsutil.vbs؟

StackOverflow https://stackoverflow.com/questions/1262921

سؤال

IIS 6 والسفن الأقدم مع برنامج نصي فائدة يسمى adsutil.vbs.:

ADSutil.VBS هي أداة مساعدة لإدارة IIS تستخدم Microsoft Visual Basic Scripting Edition (VBScript) مع واجهات خدمة Active Directory (ADSI) لمعالجة تكوين IIS. يجب تشغيل هذا البرنامج النصي باستخدام CScript، والذي يتم تثبيته مع Windows Script Host.

بمعنى آخر، تتيح لك هذه الأداة التغيير قاعدة التعريف IIS. الإعدادات برمجيا، من سطر الأوامر.

أرغب في استدعاء هذه الأداة من مشروع InstallShield من أجل إجراء تغييرات التكوين إلى IIS. أنا فضولي إذا كانت إما قانونية لإعادة توزيع البرنامج النصي (لا توجد صياغة قانونية داخل المصدر لذلك) أو لإطلاق الأمر ببساطة عن طريق:

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

وآمل أن يكون البرنامج النصي على القرص في هذا الموقع.

لذلك سؤالي هو - هل سيكون موجودا دائما في هذا المسار أعلاه، حتى لو كانت بعض مواقع الويب الأخرى (جذور INETPUB) على الجهاز موجود على محرك أقراص غير نظام؟ يبدو أن جميع مقالات MSDN وغيرها من مقالات Microsoft KB التي تشير إلى أداة ADSUTIL القيام بذلك باستخدام المسار٪ SystemDrive٪ أعلاه.

أرى ذلك على الأقل محاولة واحدة أخرى للتعامل مع هذا من خلال توزيع كل من Cscript.exe و Adsutil.vbs مع مشاريع InstallShield الخاصة بهم.

ربما هناك مفتاح تسجيل أو طريقة أخرى للحصول على موقع مسار INETPUB AdminScripts؟

ربما يجب أن أكتب فقط تطبيق C # الذي يغير القيمة أو بلدي vbscript. وتوزيع مع التطبيق الصغير الخاص بي بدلا من ذلك؟

هل كانت مفيدة؟

المحلول 2

انا عملت فيه إجابة Jshumaker لكي تحل هذه المشكلة. يبدو أن أفضل طريق هو وظيفة التثبيت التالية التي أسميها لتشغيل البرنامج النصي دفعة:

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

يمكنك القيام به بهذه الطريقة الحاجة إلى استخدام ADSUTIL.VBS كجزء من التثبيت - المسار (النسبي) له غير ذي صلة إذا كنت لا تحتاج إلى استخدامه.

نصائح أخرى

ركضت مشكلة مماثلة مؤخرا وقررت إعادة صياغة صغيرة صغيرة من VBScript لاستخدامها في إجراء مخصص في برنامج MSI Installer. يمكن أن يستغرق الأمر قليلا لمعرفة جوهر كيفية قيام Adsutil.vbs بالأشياء، لكنه يرتكب جيدا بشكل جيد. على سبيل المثال، كنت بحاجة إلى تبديل تجمع تطبيقات لتطبيق الكلاسيكية بدلا من الوضع المتكامل وتعيينه بشكل صريح لتشغيله في وضع 32 بت عند تشغيل نوافذ 64 بت، في النموذج المقطر، أدى ذلك إلى ذلك:

خيار صريح Dim IISOBITCE تعيين iISOBJECT = GetObject ("IIS: // localhost / w3svc / apppools / testpool") iISOBJECT.PUT "managedpipelinemode"، 1 IISOBJECT.SETINFO IISOBJECT.PUT
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top