مایکروسافت هر از گاهی برخی قابلیتهای مختلف را در برنامههای خود حذف میکند. این شرکت اوایل امسال بهطور مفصل توضیح داد که چرا این کار برای کاربران مفید است.
در جدیدترین اقدامات خود، مایکروسافت اعلام کرده که رابطهای برنامهنویسی جستجوی بینگ (Bing Search APIs) و یکی دیگر از قابلیتهای مرورگر اج (Edge) را کنار میگذارد تا از جایگزینهایی استفاده کند که استانداردتر و امنتر هستند. همچنین این شرکت تأیید کرده که تغییرات عمدهای در درایورهای سختافزاری ویندوز ایجاد خواهد کرد، چراکه متادیتای دستگاههای ویندوز و سرویسهای متادیتای ویندوز و اینترنت (WMIS) منسوخ اعلام شدهاند. در همین حال، یکی از قابلیتهای اکسل هم قرار است حذف شود، چون مایکروسافت فکر میکند حفظ و نگهداری آن ارزش صرف زمان و هزینه را ندارد.
به همین ترتیب، حذف VBScript هم مدتی است که در برنامه مایکروسافت قرار گرفته. این شرکت برای اولین بار در ماه مه ۲۰۲۳ تمایل خود برای حذف آن را بیان کرد. بعدها، در اکتبر همان سال، مایکروسافت بهطور رسمی این قابلیت را منسوخ اعلام کرد.

با این حال، اگر با این موضوع آشنا نیستید، باید بدانید که اعلام منسوخ شدن یک قابلیت به این معنا نیست که آن ویژگی بلافاصله حذف میشود. در عوض، آن قابلیت برای حذف علامتگذاری میشود و وارد «مرحله منسوخ شدن» میگردد. همانطور که مایکروسافت پیشتر توضیح داده بود، این مرحله به سازمانهایی که به این قابلیت وابسته هستند فرصت میدهد تا آماده شوند و به گزینههای جدید مهاجرت کنند.
جدول زمانی منسوخ شدن VBScript در سه مرحله
بر این اساس، مایکروسافت در ماه مه ۲۰۲۴ یک جدول زمانی ارائه داد و این مرحله منسوخ شدن را به سه بخش تقسیم کرد. فاز اول همچنان ادامه دارد و در حال حاضر VBScript همچنان بهطور پیشفرض به عنوان یک قابلیت درخواستی (Feature on Demand یا FOD) فعال است.
اما اینجاست که ماجرا کمی پیچیده میشود. مایکروسافت پیشتر در جدول زمانی اعلام کرده بود که قابلیت FOD مربوط به VBScript حدود سال ۲۰۲۷ غیرفعال خواهد شد و این زمانبندی با بهروزرسانیهای آینده ویندوز در سالهای ۲۰۲۶ و ۲۰۲۷ همزمان میشود.
اما راهنمای جدیدی که مایکروسافت امروز درباره حذف VBScript منتشر کرده، نشان میدهد که امکان دارد دسترسی به FOD زودتر و حتی از نسخه ۲۴H۲ ویندوز ۱۱ یا شاید در ۲۵H۲ حذف شود (هماکنون نشانههایی از نسخه ۲۵H۲ نیز دیده میشود). شرکت مینویسد:
«در مرحله فعلی منسوخ شدن VBScript، این قابلیت به عنوان یک قابلیت درخواستی (FOD) در ویندوز ۱۱ نسخه ۲۴H۲ فعال است. پیش از آنکه VBScript بهطور پیشفرض در این نسخهها و نسخههای آینده سیستمعامل غیرفعال شود، بسیار مهم است که شما شناسایی کنید کجا و چگونه فایل vbscript.dll هنوز در محیط سازمان شما مورد استفاده قرار میگیرد.»
در نتیجه، لحن نوشتهها نشان میدهد که امکان دارد VBScript زودتر به عنوان یک قابلیت پیشفرض حذف شود و شاید به همین خاطر هم مایکروسافت این راهنمای جدید را منتشر کرده تا به شرکتها کمک کند سریعتر به گزینههای جدید مهاجرت کنند. به هر حال، این غول فناوری اکنون میگوید «زمان آن رسیده که بهطور فعال VBScript را در ویندوز ۱۱ غیرفعال کنید».
در این راهنما، مایکروسافت چهار روش را معرفی کرده که به شرکتها کمک میکند استفاده از VBScript را در فرایندهای کاریشان شناسایی کنند تا بتوانند اقدامات لازم برای حذف کامل همه فایلهای کتابخانه پیوند پویا (DLL) مبتنی بر VBScript را انجام دهند.
این شرکت توصیه کرده که از ابزار رسمی SysMon (System Monitor) خود برای ردیابی و شناسایی DLLهای VBScript و همچنین بررسی وابستگیهای VBScript مثل آنهایی که مربوط به Group Policy (سیاستهای گروهی) و اسکریپتهای PowerShell برای ورود، خروج، راهاندازی، خاموشی، وظایف زمانبندیشده و یا فراخوانی VBScript هستند، استفاده شود.
برای کمک بیشتر، مایکروسافت یک اسکریپت PowerShell نیز ارائه کرده تا بتوانید در کل سیستم به دنبال فایلهای VBScript بگردید:
pathsToScan=@("C:\Users","C:\ProgramData","C:\Scripts")logPath = "C:\VBSScriptScan\VbsFiles_(hostname).csv"results = foreach (pathinpathsToScan) { if (Test-Path path) { Get-ChildItem -Path path -Filter *.vbs -Recurse -ErrorAction SilentlyContinue | Select-Object FullName, LastWriteTime, Length } }
در مورد اسکریپتهای PowerShell، مایکروسافت یک نمونه اسکریپت دیگر هم برای شناسایی وجود VBScript توکار در بستههای نصبکننده مایکروسافت (MSI) ارائه داده است:
Get-ChildItem -Path “C:\MSIRepo” -Recurse -Filter *.msi | ForEach-Object { msiPath=_.FullName sql="SELECT∗FROMCustomAction"installer = New-Object -ComObject WindowsInstaller.Installer database=installer.GetType().InvokeMember(“OpenDatabase”, “InvokeMethod”, null,installer, @(msiPath,0))view = database.OpenView(sql) view.Execute()record = view.Fetch()while(record -ne null) { actionName = record.StringData(1)actionType = [int]record.StringData(2)if(actionType -eq 6 -or actionType−eq38−oractionType -eq 50) { Write-Output “⚠ VBScript Custom Action: actionNameinmsiPath” } record=view.Fetch() } }
همانطور که گفته شد، مایکروسافت توصیه میکند از حالا VBScript را به شکل فعال در ویندوز ۱۱ غیرفعال کنید. شرکت توضیح داده که پس از شناسایی استفاده VBScript در سیستمهای سازمان، چگونه میتوانید این کار را انجام دهید:
از دستور زیر در ابزار Deployment Image Servicing and Management (DISM) استفاده کنید:
Dism /Online /Remove-Capability /CapabilityName:VBSCRIPT~~~~
برای اجرای این دستور در همه سیستمها، میتوانید از Microsoft Intune، اسکریپتهای راهاندازی GPO یا Microsoft Configuration Manager استفاده کنید.
مایکروسافت میگوید پس از اجرای دستور بالا، VBScript غیرفعال خواهد شد. به این ترتیب همه پردازشهایی که سعی دارند از VBScript استفاده کنند مسدود میشوند و یا «بیصدا شکست میخورند یا با خطا مواجه میشوند.» میتوانید پست وبلاگ مربوطه را در وبسایت رسمی Tech Community مایکروسافت بخوانید.