كيف يمكن الوصول إلى تطبيق متغير البيئة التي وضعتها تطبيق آخر؟

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

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

المحلول

إذا كنت تحاول فقط لضبط بيئة الطفل من الوالد:

var p = new Process();
p.StartInfo.EnvironmentVariables["TEST_ENV"] = "From parent";
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = @"C:\src\bin\Debug\ChildProc.exe";
p.Start();

إذا كنت لا تريد للطفل يرث بيئة عملية الأصل:

var psi = new ProcessStartInfo();
psi.EnvironmentVariables["TEST_ENV"] = "From parent";
psi.UseShellExecute = false;
psi.FileName = @"C:\src\bin\Debug\ChildProc.exe";
Process.Start(psi);

نصائح أخرى

وموروثة متغيرات البيئة في عمليات طفل ولكن كل طفل يحصل على نسخة - إذا قمت بتغيير بيئة الأم بعد ذلك، وهذا لن يعكس في الأطفال

وهذا هو لأسباب أمنية: إذا كانت مشتركة المتغيرات، يمكن أن عمليات يرى في الذاكرة بعضها البعض والتي من شأنها أن تسبب جميع أنواع المشاكل

.

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

إذا كنت بحاجة إلى التواصل مع عملية طفل الحالية، واستخدام الأنابيب.

وكل تطبيق يعمل مع انها نسخة الخاصة من البيئة ولذلك فإن عملية الطفل لا يمكن أن تؤثر على البيئة من الوالد. وهذا ينطبق على طول الطريق إلى CreateProcess حيث البيئة هي إدخال / المعلمة الاختيارية - أي في اتجاه واحد

وهناك العديد من آليات IPC المتاحة لديك من الأنابيب اسمه إلى مآخذ على الذاكرة المشتركة إلى ملفات ... والقائمة تطول.

ولكن المشتبه به أن الملفات ستكون أسهل بالنسبة لك.

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

ومفتاح = قيمة key2 = و value2

وقليلا أكثر تعقيدا (ولكن ربما أسهل للعمل مع) مثل XML ... أو أي شكل المخصص الذي تريد.

ويجب أن يتم تنفيذ الأمر في داخل البيئة العملية الحالية. عادة، سوف باش تنفيذ جميع العمليات كعملية الطفل الذي يتم إعطاء نسخة للقراءة فقط من البيئة الوالدين ويخلق إدخال جديد كلما يتم تعديل متغير.

والنقطة (.) هو أمر لا ينبغي الخلط بينه وبين مواصفات الدليل الحالي. يسبب الأمر دوت الأمر التالي ليتم تنفيذها ضمن بيئة الأم. بهذه الطريقة، ومتغيرات البيئة العملية هي متغيرات البيئة من عملية الاستدعاء.

scroll top