คำถามนี้ไม่เกี่ยวข้องกับการเขียนโปรแกรมมากนักเนื่องจากเกี่ยวข้องกับการปรับใช้
ฉันพบว่าตัวเองสนทนาบ่อยมากกับกลุ่มใน บริษัท ของฉันซึ่งมีหน้าที่ดูแลเซิร์ฟเวอร์ Windows ที่ใช้งานจริงและปรับใช้โค้ดของเรากับพวกเขา ด้วยเหตุผลทางกฎหมายและการปฏิบัติตามข้อกำหนดฉันไม่มีการเปิดเผยโดยตรงหรือการควบคุมใด ๆ เกี่ยวกับเซิร์ฟเวอร์ดังนั้นวิธีเดียวที่ฉันจะบอกได้ว่ามีการติดตั้ง. NET เวอร์ชันใดในเวอร์ชันใดก็ตามคือผ่านคำแนะนำที่ฉันให้กับกลุ่มนั้น
จนถึงตอนนี้วิธีการทั้งหมดที่ฉันคิดได้เพื่อบอกว่ามีการติดตั้งเวอร์ชันใด (ตรวจสอบเครื่องมือการดูแลระบบที่ตรงกับ 1.1 หรือ 2.0 ตรวจสอบรายการในรายการ "เพิ่ม / ลบโปรแกรม" ตรวจสอบการมีอยู่ของ ไดเร็กทอรีภายใต้ c: \ Windows \ Microsoft.NET) มีข้อบกพร่อง (ฉันเคยเห็นอย่างน้อยหนึ่งเครื่องที่มี 2.0 แต่ไม่มีรายการ 2.0 ภายใต้เครื่องมือการดูแลระบบ - และวิธีนี้ไม่ได้บอกอะไรเกี่ยวกับ 3.0+ รายการ "เพิ่ม / ลบโปรแกรม" อาจไม่สอดคล้องกับความเป็นจริงและการมีอยู่ของไดเรกทอรีไม่จำเป็นต้องมีความหมายอะไรเลย)
เนื่องจากโดยทั่วไปฉันจำเป็นต้องรู้สิ่งเหล่านี้ล่วงหน้า (เมื่อพบว่า "อ๊ะอันนี้ไม่มีเวอร์ชันและเซอร์วิสแพ็คทั้งหมดที่คุณต้องการ" ทำงานได้ไม่ดีกับช่วงเวลาการบำรุงรักษาสั้น ๆ ) และฉันต้อง ทำการตรวจสอบ "โดยพร็อกซี" เนื่องจากฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้โดยตรงมีวิธีใดที่จะบอกได้ว่า. NET เวอร์ชันใดที่ติดตั้งบน Windows Server ที่ใช้งานจริง โดยเฉพาะอย่างยิ่งวิธีที่แท้จริงในการทำเช่นนั้นโดยใช้สิ่งที่เฟรมเวิร์กติดตั้งเนื่องจากจะเร็วกว่าและไม่จำเป็นต้องโหลดยูทิลิตี้บางประเภทและยังเป็นวิธีการที่จะล้มเหลวอย่างแน่นอนหากติดตั้งเฟรมเวิร์กไม่ถูกต้อง แต่ยังมีไฟล์อยู่ (เช่น มีไดเร็กทอรีและ gacutil.exe อยู่ในนั้น แต่เฟรมเวิร์กเวอร์ชันนั้นไม่ได้ "ติดตั้ง")
แก้ไข:ในกรณีที่ไม่มีวิธีการภายในที่เข้าใจผิดในการทำสิ่งนี้ที่มีอยู่ใน Framework (s) มีใครรู้จักโปรแกรมที่ดีน้ำหนักเบาไม่ต้องติดตั้งที่สามารถค้นหาสิ่งนี้ได้หรือไม่? ฉันนึกภาพออกว่าใครบางคนสามารถเขียนได้อย่างง่ายดาย แต่ถ้ามีอยู่แล้วจะดีกว่านี้