c# - ويندوز - لا يمكن العثور على الملفات عند البحث في جهاز كمبيوتر




السماح بإذن الوصول للكتابة في ملفات برنامج ويندوز 7 (10)

أضف عنصرًا جديدًا في المشروع: بيان التطبيق واحفظه.

افتح الآن هذا الملف وابحث عن <requestExecutionLevel> . يجب ضبطه على asInvoker .

قم highestAvailable إلى highestAvailable . الآن عند تنفيذ طلبك ، ستظهر رسالة تطلب الإذن. انقر فوق yes !

هذا كل شيء :) الآن يمكنك الكتابة والقراءة من system32 أو أي ملف آخر يتطلب حق المسؤول

يمكنك التحقق من التطبيق الخاص بك عن طريق sigcheck .

sigcheck.exe -m yourapp.exe

وفي الإخراج تحقق لعنصر المطلوبةإعدام المستوى.

يلقي طلبي أخطاء "تم رفض الوصول" عند كتابة ملفات مؤقتة في دليل التثبيت حيث يوجد الملف القابل للتنفيذ. ومع ذلك يعمل بشكل جيد في نظام التشغيل Windows XP. كيفية توفير حقوق الوصول إلى دليل ملفات البرامج في ويندوز 7؟

تحرير: كيفية جعل البرنامج اطلب من المستخدم رفع الحقوق؟ (أي تشغيل البرنامج مع حقوق المسؤول الكامل)


أعتقد أن هناك حلًا بديلًا لكل هذه المشكلات .... قم بتقديم طلب من مستويين. كما ذكر أعلاه ...

1) قاذفة والتي ستطلق تطبيق رئيسي آخر باستخدام رمز مثل (VB)

Call ShellExecute(hwnd, "runas", App.Path & "\MainApp.exe", 0, 0, vbNormalFocus)

2) التطبيق الرئيسي ، وهو الكتابة إلى المناطق المحمية ، أي مجلد ملفات البرنامج

لقد جربت هذا بنجاح مع ويندوز 7

أقوم أيضًا بتطوير تطبيق يحتوي على ميزة التحديث عبر الإنترنت. لكنه لا يعمل في Vista / W7 ..

أتفق مع الشعوب الأخرى حول سياسات Microsoft والممارسات القياسية.

لكن سؤالي هو .. 1) كيفية تطبيق التحديث على تطبيق موجود ، والذي ربما يظل دائمًا في مجلد Program Files. 2) قد يكون هناك بعض الطرق للقيام بذلك ، وإلا كيف يعمل محدث goolge أو محدث برامج مكافحة الفيروسات أو أي برنامج تحديث يعمل؟

أحتاج إلى إجابة لأسئلتي .....: س

البروفيسور راجندرا خوبي (معهد ماساتشوستس للتكنولوجيا ، بوني ، الهند)


إذا كان لديك مثل هذا البرنامج ، فقم فقط بتثبيته في C:\ وليس في ملفات البرنامج. واجهت الكثير من المشاكل عندما كنت أقوم بتثبيت Android SDK. تم حل مشكلتي عن طريق تثبيتها في C:\ .


بينما M $ "أفضل الممارسات" هي عدم كتابة البيانات في المجلد٪ programfiles٪ ؛ أنا أحيانا أفعل. لا أعتقد أنه من الحكمة أن تكتب ملفات مؤقتة في مثل هذا المجلد ؛ كما قد متغير البيئة TEMP على سبيل المثال أشر إلى محرك ذاكرة الوصول العشوائي لطيفة ، سريع ،.

لا أحب كتابة البيانات في٪ APPDATA٪. إذا تعطلت النوافذ بشدة بحيث يحتاج المرء على سبيل المثال إلى مسحها وإعادة تثبيتها تمامًا ، ربما على محرك أقراص آخر ، فقد تفقد جميع الإعدادات الخاصة بك تقريبًا لجميع برامجك. أنا أعلم. لقد فعلت ذلك عدة مرات. إذا تم تخزينه في٪ programfiles٪ ، 1) فلن تضيع إذا اضطررت إلى إعادة تثبيت Windows على محرك أقراص آخر ، على سبيل المثال ، حيث يمكن للمستخدم تشغيل البرنامج ببساطة من دليله ، 2) يجعله قابلاً للنقل ، و 3) يحتفظ ملفات البرنامج معا.

حصلت على حق الوصول للكتابة من خلال وجود برنامج التثبيت ، Inno Setup ، وإنشاء ملف فارغ لملف INI الخاص بي ، ومنحه إعداد "تعديل المستخدمين" في قسم [الملفات]. يمكنني الآن الكتابة في الإرادة.


سيكون من الأفضل إنشاء مجلد باسم "c: \ programs قابل للكتابة" ووضعك تطبيق أسفل هذا المجلد. بهذه الطريقة يمكن تجنب غابة من المجلدات المنخفضة.

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


طريقة أخرى للدوران تتمثل في إيقاف UAC ثم إعادة تشغيله. إنشاء ملف CMD مع التعليمات البرمجية التالية ؛

Rem Stop UAC٪ windir٪ \ System32 \ reg.exe ADD HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v EnableLUA / t REG_DWORD / d 0 / f rem remot reboot ابدأ ShutDown / R / F / T 30

ستحتاج إلى النقر بزر الماوس الأيمن على ملف CMD واستخدامها كمسؤول. بمجرد الانتهاء من ما تفعله ، أعد تشغيل UAC بالشفرة التالية (لا حاجة لاستخدام تشغيل كمسؤول هذه المرة) ؛

٪ windir٪ \ System32 \ reg.exe أضف HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v EnableLUA / t REG_DWORD / d 1 / f

rem rem Force boot Start ShutDown / R / F / T 30

يجب على الجانب السفلي لاستخدام هذه الطريقة النقر بزر الماوس الأيمن واستخدامها كمسؤول لإغلاق UAC لأسفل وعليك إعادة التشغيل حتى تصبح نافذة المفعول.

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


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

لا تقوم المرحلة 1 سوى تحضير تفرخ مرتفع باستخدام كائن System.Diagnostics.ProcessStartInfo واستدعاء Start ().

المرحلة 2 هي التطبيق الذي يعمل في حالة مرتفعة.

كما ذكر أعلاه ، على الرغم من أنك نادراً ما تريد القيام بذلك. وبالتأكيد لا ترغب في القيام بذلك فقط حتى تتمكن من كتابة الملفات المؤقتة في٪ programfiles٪. استخدم هذه الطريقة فقط عندما تحتاج إلى تنفيذ إجراءات إدارية مثل بدء / إيقاف الخدمة ، إلخ. اكتب ملفاتك المؤقتة في مكان أفضل ، كما هو موضح في الإجابات الأخرى هنا.


لا يمكنني أن أتفق مع الحجج ، أنه من الأفضل كتابة جميع الملفات في الدلائل الأخرى ، على سبيل المثال ،٪ APPDATA٪ ، إنه فقط لا يمكنك تجنبه ، إذا كنت ترغب في تجنب تشغيل التطبيق كمسؤول على Windows 7.

سيكون من الأنظف كثيرًا الاحتفاظ بجميع البيانات الخاصة بالتطبيق (مثل ملفات ini) في نفس المجلد مثل التطبيق (أو في المجلدات الفرعية) مثل تسريع البيانات في جميع أنحاء القرص (٪ APPDATA٪ ، التسجيل ومن يعرف مكان آخر) . هذه مجرد فكرة Microsoft عن البرمجة النظيفة. من الطبيعي أن تحتاج إلى منظف السجل ، منظف القرص ، منظف الملفات المؤقت ، ... بدلاً من الممارسة الإلكترونية النظيفة جدًا - تؤدي إزالة مجلد التطبيق إلى إزالة جميع البيانات الخاصة بالتطبيق (مثل بيانات مستخدم exep ، والتي عادة ما تكون في مكان ما في "المستندات" أو نحو ذلك) .

في برامجي ، أفضّل أن يكون لديّ ملفات ini في دليل التطبيق ، ومع ذلك ، لا أمتلكها هناك ، فقط لأنني لا أستطيع امتلاكها هناك (على Windows).


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

ومع ذلك ، لن أقترح القيام بذلك. سيكون من الأفضل استخدام شيء مثل هذا:

Environment.GetFolderPath(SpecialFolder.ApplicationData);

للحصول على مسار AppData Folder وإنشاء مجلد هناك لتطبيقك. ثم ضع الملفات المؤقتة هناك.


يمكنك إضافة وصول إلى مستخدم IIS لمجلدات موقع الويب أو تطبيق الويب الذي تريد كتابته أو إعادة كتابته.





c#