الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع الريجسترى من خلال سى شارب

بدأه mohamed salama في 24 فبراير 2010 · 11 رد · 2,188 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

حملت احد الدروس للتعامل مع الريجسترى من خلال السى شارب وقرأت منه دون مشاكل تذكر ولكن عندما بدأت بتغيير قيمه مفتاح من خلال الكود حدث لى هذه المشكله ...

You can't access registry

وهذا هو الكود مع العلم انى استخدم وندوز 7 نسخه home premium

RegistryKey r = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Mykey", true);
            r.SetValue("dat", textBox1.Text);
            r.Close();

ارجوا المساعده فى هذا ... وابداء الرأى فى هذه المشكله مع العلم انى جربت كتيرا كسر هذه الحمايه ولكنى فشلت ...

شكرا لكم

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#2

الكلام فعلا صحيح حدثت معي نفس المشكلة و بالذات مع وبندوز 7 أعتقد أن المشكلة مرتبطة بالويندوز أرجو من الخبراء الإجابة

#3

يستوجب أن تعطى للأسمبلى الذى سوف يتعامل مع الريجيسترى أذن لكى يستطيع ان يتعامل معه

جرب هذا

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]

مع تغير الHKEY_CURRENT_USER بما تراه مناسبا

ملحوظة ضع ذلك السطر فوق الNamespace الذى يحتوى على الكود الذى سوف تستخدمه للتعامل مع الريجيسترى

و أيضا لو انك سوف تتعامل مع اكثر من فرع فسوف تحتاج أن تضع لكل فرع سطر مثل السطر السابق

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_LOCAL_MACHINE")]
namespace MyNameSpace
{
    class RegistryHelper : IDisposable
    {
        .
        .
        .
        .

هذا الكود يعمل مع الأكس بى و لم أجربه على سبعة أو فيستا

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#4

اشكرك اخ محمد نور وجارى التجربه ...

وكنت قد اوضحت انى اريد ان اتعرف عليك ...

لو تسمح بهذا ايميلى هو mohamed_salama848@yahoo.com

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#5
mohamed salama كتب:

اشكرك اخ محمد نور وجارى التجربه ...

وكنت قد اوضحت انى اريد ان اتعرف عليك ...

يا ترى متى !!

عموما أنا حاليا لا أستطيع أن أدخل على الماسنجر و ربما يستمر ذلك الأمر لشهر أو أقل أو أكثر

لذلك استبيحك عذرا لكونى ربما لن أستطيع أن أتحدث إليك فى الفترى القادمة

و يشرفنى التعرف عليك فى أى وقت بإذن الله

أرجو أن تخبرنا بالنتيجة تجربة الكود

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#6

الايرور ظهر ولم يفاح كود الاخ محمد نور فى تخطى هذه المشكله ...

post-170153-1267139345297_thumb.jpg

تم تعديل هذه المشاركة بواسطة mohamed salama في 26 فبراير 2010 في 02:09

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#7

السلام عليكم لقد قمت بتجربة الكود الجديد و لم يعمل أيضا لكن: ذهبت للملف التنفيذي للبرنامج و ضعط بالزر اليمين للماوس و إخترت Run as administrator و تمت العملية بنجاح و بحثت في الرجستري ووجدت أن المفتاح تمت إضافته وبالتالي السؤال المطروح: هل هناك طرقة من الكود لجعل البرنامج يعمل ك administrator؟ مع العلم أن المشكلة غير موجودة على الXP و هي موجودة على ويندوز 7 شكرا

#8

السلام عليكم

في النسخ الويندوز الفيستا والسفن لايتعامل مع ملفات النسخة او الريجيستري المستخدم العادي

فلابد من وجود تصريحات لة بالتعامل معها فلا يحق للتعامل معها الا الــ Administrator

طريقة اعطاء تصريحات للمستخدم

لابد من استخدام name Space

 using System.Security.AccessControl ;

ثم يتم تعريف المستخدم المراد عمل تصريحات لة ثم اخد كائن من السيكيورتي

ويتم بعد ذلك تحديد الصلاحيات المراد اعطاءها الي المستخدم وفي اي مكان هذة التصريحات وفي هذة الحالة التصريحات تستخدم للريجيستري

ثم بعد ذلك يتم اضافة هذة التصريحات الي السيكيورتي

وهذا هو الكود

string user = Environment.UserName;

            RegistrySecurity secur = new RegistrySecurity();

            RegistryAccessRule access = new RegistryAccessRule(user, RegistryRights.FullControl, AccessControlType.Allow);

            secur.AddAccessRule(access);

            RegistryKey  key = Registry.CurrentUser.CreateSubKey("Software\\valaccess");

            key.SetValue("dddd", "ffff");

            key.Close();

ان لم يتضح شيء ارجو الافادة

والله الموفق

[moveright]Haytham [/moveright]

#10

لم يعمل هذا الكود واعطانى نفس المشكله .... ارجوووووووووووووووووووا الرد على هذه المشكله

... اين المتخصصين ؟؟؟

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#11
mohamed salama كتب:

لم يعمل هذا الكود واعطانى نفس المشكله .... ارجوووووووووووووووووووا الرد على هذه المشكله

السلام عليكم

اخ محمد قمت بتجربة الكود علي نسخة سفن يلتيميت ونجح الكود في التعديل والحذف في الريجيستري

دون حدوث اي اخطاء

[moveright]Haytham [/moveright]

مواضيع مشابهة