تنزيل

فك الضغط وشغّل، أو ثبّت

الإصدار 0.5.0. الأرشيفات لا تحتاج إلى برنامج تثبيت ولا تكتب شيئًا في السجل، والاطلاع لا يحتاج إلى صلاحيات المسؤول. أما برنامج التثبيت الموقّع فيضع البرنامجين على الجهاز كله بدلًا من ذلك. مجاني ومفتوح المصدر بموجب GPL-3.0.

ما الموجود في الإصدار

الملفما هو
BetterWindowsServices-win-x64.zipالنافذة: BetterWindowsServices.exe، ملف تنفيذي واحد قائم بذاته يحمل وقت تشغيل .NET الخاص به بداخله
bws-cli-win-x64.zipسطر الأوامر: bws.exe، ملف تنفيذي واحد قائم بذاته، للسكربتات والمهام المجدولة وCI
BetterWindowsServices-win-x64.msiبرنامج التثبيت: البرنامجان معًا في Program Files لكل حساب على الجهاز، والنافذة في قائمة Start والأمر bws في PATH الخاص بالجهاز

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

يحمل برنامج التثبيت ما في الأرشيفين تمامًا. ويُثبَّت بصمت بالأمر msiexec /i BetterWindowsServices-win-x64.msi /qn، وإصدار أحدث يُثبَّت فوق الأقدم، وهو لا يغلق شيئًا يعمل، فأغلق النافذة وأي bws يعمل قبل الترقية، لأن نسخة تُترك تعمل قد تتوقف بخطأ. والإزالة من Settings, Apps تحذف البرنامجين وإدخال قائمة Start وإدخال PATH، وتترك ملفاتك الخاصة.

الملفات التنفيذية موقّعة بتوقيع Authenticode، فيذكر Windows اسم الناشر بدل أن يحذّر من ناشر مجهول.

المتطلبات

  • Windows 10 الإصدار 1809 أو أحدث، أو Windows Server 2019 أو أحدث. 64 بت فقط: العملية ذات 32 بت تقرأ مسارات ومفاتيح سجل مُعاد توجيهها، وهذا سيعطي إجابات خاطئة بصمت.
  • لا حاجة إلى تثبيت .NET. يحمل الملفان التنفيذيان وقت تشغيل .NET الخاص بهما.
  • صلاحيات المسؤول لتغيير أي شيء. القراءة والبحث واللقطات والمقارنات تعمل بدونها، مع ظهور عناصر أقل وإعلان الأداة ذلك في الأعلى بدل التظاهر بأن القائمة هي الجهاز كله.

تحتفظ النافذة بملف واحد خاص بها، هو التخطيط الذي تركت عليه القائمة، تحت %APPDATA%\BetterWindowsServices. وتذهب اللقطة إلى حيث تطلب من bws snapshot create وضعها، وإلى المجلد الحالي إن لم تطلب.

البرنامج يتحدث الإنجليزية. تقرأ النافذة ملف لغة، هو languages\gui.<code>.json، يوضع بجانبها ويُختار بلغة Windows، دون أي إعداد. فالترجمة إذن مساهمة يمكن إضافتها دون إعادة بناء، ويشرح CONTRIBUTING.md كيف.

برامج مكافحة الفيروسات وEDR

هذه الأداة تفعل ما يفعله المسؤول بالخدمات، وبعض ذلك هو ما تراقبه برامج الأمان.

تستطيع الأداة إيقاف الخدمات وبدءها، وإنهاء العملية الواقفة خلف إحداها، وهي تقرأ security descriptor والامتيازات المطلوبة لكل خدمة. وبرنامج EDR الذي ينبّه إلى عملية تُنهي svchost.exe يؤدي عمله، والإيقاف القسري هنا قد يبدو كذلك تمامًا.

وما لا تفعله، لتتحقق من الادعاء بنفسك: لا تحقن شيئًا في أي عملية، ولا تضغط ولا تشوّش شيئًا، ولا تثبّت خدمة ولا برنامج تشغيل ولا تترك شيئًا يعمل، ولا تفتح أي اتصال بالشبكة. وهي مفتوحة المصدر بموجب GPL-3.0 ويمكنك بناء الملفين التنفيذيين بنفسك.

إن كانت سياستك تحتاج إلى استثناء، فاستثنِ الملفين التنفيذيين كملفين لا كمجلد. والشيء الوحيد الجدير بالعناية نفسها التي تُعطى للأداة هو ملف اللقطة: فهو يصف الجهاز كله.

البناء من المصدر

.NET 10 SDK، على Windows.

git clone https://github.com/donislawdev/BetterWindowsServices
cd BetterWindowsServices
dotnet build BetterWindowsServices.slnx -c Release
dotnet test BetterWindowsServices.slnx -c Release

بعض الاختبارات تقرأ مدير التحكم بالخدمات الحقيقي في الجهاز الذي تعمل عليه وتقارن ما تقوله هذه الأداة بما يقوله sc.exe. وهي للقراءة فقط. والملفان التنفيذيان ذوا الملف الواحد اللذان تحملهما الإصدارات ناتجان عن أمري النشر هذين، وكل منهما ملف واحد وبداخله وقت التشغيل:

dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

يظهران باسمي bws.exe وBetterWindowsServices.exe تحت bin/Release/.../win-x64/publish/ في كل مشروع. أما ملفات .pdb بجانبهما فهي رموز لتصحيح الأخطاء، ولا يحتاج التشغيل إليها.

كلفة التشغيل

قيس على جهاز واحد فيه 804 خدمات. ستختلف أرقامك، فعدد الخدمات والقرص والمعالج كلها تؤثر فيها.

نحو خُمس ثانية

ليقرأ bws list الجهاز كله.

نحو 19 MB

لسطر الأوامر على الجهاز نفسه.