كيف يمكنني الحصول على وتعيين متغيرات البيئة في C# ؟

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

سؤال

كيف يمكنني الحصول على Environnment المتغيرات و إذا كان هناك شيء مفقود ، تعيين قيمة ؟

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

المحلول

استخدام النظام.البيئة فئة.

أساليب

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

و

System.Environment.SetEnvironmentVariable(variable, value [, Target])

سوف قيام بهذه المهمة بالنسبة لك.

المعلمة الاختيارية Target هو من نوع enum EnvironmentVariableTarget و أنها يمكن أن تكون واحدة من: Machine, Process, أو User.إذا قمت بحذف ذلك الهدف الافتراضي هو العملية الحالية.

نصائح أخرى

وأنا واجهت هذا بينما كان يعمل على التطبيق وحدة التحكم .NET لقراءة متغير بيئة PATH، وجدت أن استخدام System.Environment.GetEnvironmentVariable سيتم توسيع متغيرات البيئة تلقائيا.

وأنا لا أريد أن يحدث ذلك ... وهذا يعني المجلدات في مسار مثل '٪ SYSTEMROOT٪ \ SYSTEM32 "يجري إعادة كتابتها باسم' C: \ ويندوز \ SYSTEM32. للحصول على مسار المملوءة الامم المتحدة، واضطررت الى استخدام هذا:

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

وعملت مثل السحر بالنسبة لي.

وهذا سيعمل على متغير البيئة التي هو وضع الجهاز. للمستخدمين، فقط تغيير إلى العضو بدلا من ذلك.

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);

وتعيين

الحصول على

string getEnv = Environment.GetEnvironmentVariable("envVar");

مجموعة

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);

ويمكن أن أكون قادرا على تحديث متغير البيئة عن طريق استخدام التالي

string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty;
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";"))
    EnvPath = EnvPath + ';';
EnvPath = EnvPath + @"C:\Test";
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top