سؤال كيف يمكنك إضافة متغير بيئة Windows بدون إعادة التشغيل؟


أرغب في إضافة متغير بيئة إلى جهاز Windows (سطح المكتب أو الخادم) وتكون قادرًا على استخدامه دون إعادة تشغيل هذا الجهاز.

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


162
2018-05-16 04:09


الأصل


كان لي هذه المسألة نفسها. قرأت في مكان ما أن قتل the explorer.exe عملية تحديث المتغيرات وعملت. ثم اضطررت فقط لتشغيل المستكشف من مدير المهام. - user19694
يجب عليك إغلاق موجه الأوامر ، وإعادة فتحه مرة أخرى ، لتحديث متغيرات المسار الخاصة بك. يتم تحميل المتغيرات عند بدء cmd. - NiLInfinite


الأجوبة:


يجب أن تصبح التغييرات التي تطرأ على متغيرات البيئة نافذة المفعول فوراً ، إذا قمت بإجراء التغيير عبر مربع حوار الخصائص الرئيسي للكمبيوتر المعني (انتقل إلى My Computer | Properties | Advanced | Environment متغيرات). بعد حفظ التغييرات ، يقوم برنامج Explorer ببث أ WM_SETTINGCHANGE رسالة إلى جميع النوافذ لإبلاغهم بالتغيير. يجب أن تحصل أي برامج تم إنتاجها عبر Explorer بعد ذلك على بيئة محدّثة ، على الرغم من عدم تشغيل البرامج بالفعل ، إلا إذا كانت تتعامل مع رسالة تغيير الإعداد.

لا يمكنني إخبار من وصف مشكلتك عن المشكلة المحددة التي تواجهها في هذا الأمر. هل يمكنك إخبارنا بالمزيد عن السيناريو المحدد الذي لا يعمل؟

قد تكون هذه المقالة KB أيضًا قيد الاستخدام: كيفية نشر متغيرات البيئة على النظام


153
2018-05-16 04:16



حسنًا ، أعتقد أنه يجب أن يكون هذا السلوك على خدمة التشغيل أو شيء ما. أضفت متغير بيئة جديد باستخدام الطريقة الموضحة أعلاه. بعد ذلك ، تمكنت من رؤية القيمة بعد فتح موجه أوامر جديد واستخدام الأمر "echo٪ <myvar>٪. شكرًا لكما على إجاباتك. - Chad Braun-Duin
بالنسبة لمستخدمي PowerShell ، قد يكون هذا المقتطف مفيدًا: poshcode.org/2049 - Anders Zommarin
في حالة استخدام cmd ، تحتاج إلى إعادة تشغيله إذا كان متغير env متغير - Neil McGuigan
فقط تثبيت سكالا على جهاز الكمبيوتر الخاص بي ولكن لم يتم تحديث PATH. يفترض أن MSI لم بث رسالة WM_SETTINGCHANGE. لقد أضفت متغير نظام زائف ، أي CHANGE_TO_UPDATE = z ، الذي أقوم بتحديثه لتشغيل رسالة WM_SETTINGCHANGE - تم حل المشكلة - Darren Bishop
شكرًا على CHANGE_TO_UPDATE = z ، هذا هو بالضبط الحل الذي أردت. عملت بالنسبة لي ولم يكن لدي لإعادة تشغيل الكمبيوتر. - iopq


  1. في نوع موجه الأوامر: runas /user:yourusername@yourdomain cmd
  2. سيتم فتح موجه CMD جديد ، ثم اكتب: taskkill /f /im explorer.exe
  3. ثم اكتب: explorer.exe

الآن بعد إغلاق جميع الأوامر ، سترى أن PATH تم تحديث متغير حقا.

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


54
2018-03-20 06:36



من بين جميع الإجابات على هذه الصفحة ، هذه هي الوحيدة التي عملت في الواقع بالنسبة لي. شكرا لكم!! - CoreDumpError
هذا العمل بالنسبة لي. أعتقد أن المشكلة تكمن في أنه إذا قمت بتشغيل برنامج cmd من خلال المستكشف (لإنقاذ الحاجة إلى كتابة مسارات طويلة) ، فلن يتم إغلاق المستكشف مطلقًا ، حتى إذا قمت بإغلاق جميع نوافذ المستكشف. شكرا على الحل :) - Steve Mc
عملت بالنسبة لي. يمكنك أيضًا استخدام Task Manager لقتل مهام المستكشف وإعادة تشغيله (File> Run new task). - adabyron
UHH. من فضلك لا تقتل مستكشف النوافذ ما لم يتم تعليق أحد عملياتها. بدلاً من ذلك ، افتح مربع حوار نوافذ إيقاف التشغيل وقم بإلغائه أثناء الإمساك ctrl+alt+shift. هذا سيخرج تماما مستكشف النوافذ. في Vista + يصبح من الصعب العثور على حوار نوافذ إيقاف التشغيل (ولكن لا يزال موجودًا ، على الأقل خلال 7 (غير متأكد من حوالي 8 و 10)) ، لذلك توجد طريقة ثانية. ctrl + shift + النقر بزر الماوس الأيمن في جزء فارغ من قائمة "ابدأ" واختيار "مستكشف الخروج". في 8 خيار الخروج هو نفسه ، لكنك تستخدم شريط المهام وليس في قائمة البداية. - Kevin Cathcart
يصف التعليق أعلاه نظام التشغيل الخاص بالعميل ، ولكن ينطبق نفس الشيء أو أكثر على الخوادم. لست متأكدا إذا كان إيقاف التشغيل مع مربع حوار سبب يدعم ميزة مستكشف الخروج على الرغم من ذلك ، لم تتح لهم الفرصة لاختباره ، ولا يريدون الوحوش مع أي من الخوادم في سيطرتي. - Kevin Cathcart


هناك شيء واحد يجب أخذه في الاعتبار هو أن العديد من البرامج تحصل على المتغيرات البيئية عند بدء تشغيلها لأول مرة ، لذلك قد لا تحتاج النوافذ إلى إعادة التشغيل ، وقد تكون بعض البرامج قبل أن تتمكن من استخدام المتغيرات الجديدة. مثال جيد على هذا هو الحاجة إلى فتح نافذة موجه الأوامر جديد بعد إضافة PATH (نعم ، لقد تعثرت من قبل هذا).


16
2018-05-16 06:11



تؤثر هذه المشاكل على "كافة الخدمات" ، حتى خدمة إعادة تشغيل لن ترى متغيرات البيئة الجديدة. - gimel
هل أنت متأكد أنه ليس بسبب مشاركة عملية جافا سكريبت؟ - Mark Sowul


بينما ليس لدي ما يكفي من السمعة للتعليق على أعلى إجابة على هذا السؤال ، أود أن أقول أنه ليس صحيحًا تمامًا. أعرف هذا لأنه بغض النظر عن أي حل بديل حاولت في هذا المنصب ، لا شيء يعمل بالفعل.

ال المادة kb المرتبطة في هذا الجواب في الواقع تنص على ما يلي:

ومع ذلك ، لاحظ أن التعديلات إلى متغيرات البيئة لا   النتيجة في التغيير الفوري. على سبيل المثال ، إذا قمت بتشغيل أمر آخر   موجه بعد إجراء التغييرات ، سوف متغيرات البيئة   تعكس القيم السابقة (وليست الحالية). التغييرات لا تأخذ   تأثير حتى تقوم بتسجيل الخروج ثم قم بتسجيل الدخول مرة أخرى.

الجزء المتعلق بمتغيرات البيئة التي يتم إعادة ضبطها إلى القيم السابقة بعد إعادة تحميل موجه الأوامر هو تماماً ما واجهته في Windows Server 2008.

المقال يذهب ليقول:

ولتنفيذ هذه التغييرات دون الحاجة إلى تسجيل الخروج ، قم ببث رسالة WM_SETTINGCHANGE إلى كافة الإطارات الموجودة في النظام ، بحيث يمكن لأي تطبيقات مهتمة (مثل مستكشف Windows وإدارة البرامج ومدير المهام ولوحة التحكم وما إلى ذلك) إجراء تحديث.

لا يعني ذلك أن Explorer يبث رسالة WM_SETTINGCHANGE بمجرد تغيير متغيرات بيئة النظام أو أنه يعمل بالفعل. لست متأكدًا من كيفية القيام بما هو مقترح في مقالة قاعدة المعارف (لنشر التغييرات على الفور) من موجه الأوامر.


12
2017-11-26 22:30





جعل env. متغير متاح على الفور:

1. Open a shell

بناءً على متغير البيئة الذي تريد تغييره ، قم بما يلي:    (لنفترض أنك تريد إضافة PATH جديد لتطبيق تم تثبيته مؤخرًا) لذلك ، في موجه shell ، اكتب ما يلي:

2. PATH=%PATH%;C:\type\your\new\path\here

تأكد من إضافة المسار الجديد إلى متغير البيئة

3. echo %PATH%

فعله.

اجعل المتغير متاحًا عند إعادة التشغيل

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

اختبارها والعمل على ويندوز 7/10


4
2017-11-18 17:00





الحل المحتمل للخدمات هو تشغيلها مؤقتًا كمستخدم آخر (بخلاف LocalSystem و LocalService و NetworkService). على سبيل المثال لخدمة Apache ، يعمل هذا دون أي مشاكل. لتغيير وحدة خدمة فتح حساب service.msc ، حدد الخدمة ، انقر فوق خصائص الخدمة وعلامة التبويب الثانية أدخل بيانات اعتماد تسجيل الدخول للمستخدم. إعادة تشغيل الخدمة ومتغيرات البيئة يجب أن تكون محدثة.

إذا كان هذا هو المستخدم الذي تم تسجيله من هذا يجب أن تعمل دون مشاكل. إذا كنت تستخدم حساب المستخدم الحالي ، فقد يكون من الضروري إعادة تشغيل explorer.exe أيضًا. لاحظ أيضًا أن تشغيل الخدمات كحساب مستخدم عادي قد يؤدي إلى مخاطر أمنية.


3
2017-08-09 20:26