سؤال

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

        using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
        {
            reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
        }

يحرر:نظام التشغيل هو 32 بت XP، وبقدر ما أستطيع أن أقول أنه يفشل بصمت.

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

المحلول

هل هناك أي سبب يدفعك إلى القيام بذلك من خلال التسجيل؟

إذا لم يكن الأمر كذلك، فيمكنك استخدام Environment.SetEnvironmentVariable() منذ .NET 2.0.يسمح لك بالضبط على أساس الجهاز أو العملية أو المستخدم.

نصائح أخرى

ما هو نظام التشغيل هذا؟هل هو على نظام 64 بت؟ما هي طبيعة الفشل:صامت أم يتم طرح استثناء؟

يمكنك محاولة الجري مراقب العمليات ومعرفة ما إذا كان يرى محاولة تعيين القيمة.

لماذا تستخدم CustomAction لهذا؟يدعم Windows Installer تحديث متغيرات البيئة محليًا.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top