EasyDelphi Q&A

.تم الانتقال للموقع الجديد . وسيبقى الموقع القديم هذا متاح للقراءة فقط حتى الانتهاء من نقل كل الاسئلة إلى الموقع الجديد

يمكنك طرح الاسئلة والنقاشات في الموقع الجديد. الذهاب للموقع الجديد


+4 تصويتات
213 مشاهدات
كيف نبرمج بدخول كمسؤول اليا الى البرنامج لايهم ان كان مبرمجا بالدالفي ، هناك تقنية رايتها في كود سورس Notepad++ وخلاصتها هو اعادة منداة البرنامج من البرنامج نفسه بدخول كمسؤول وغلق البرنامج الاب ، هل يوجد تقنية اخرى ,
سُئل في تصنيف Delphi بواسطة (170 نقاط) | 213 مشاهدات
0
و ضح أكثر سؤالك ؟؟؟ و ما هو إصدار الدلفي الذي أنت تعمل عليه ؟

3 إجابة

+5 تصويتات

الطريقة الابسط انه تجعل برنامج يتطلب خاصية المسؤول بشكل دائم، على عكس ال np++ الذي يضيفها عند الحاجة فقط.

تقدر أن تضيف خاصية على ملف ال manifest وهو ملف xml مرفق يجب انه تنشأئه

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

لن انسخ الشرح من موقع آخر ، اعتقد الصور فيه واضحة بشكل كافي

http://chapmanworld.com/2015/06/08/elevated-privileges-for-delphi-applications/

تم الرد عليه بواسطة (16,020 نقاط)
0
هذه افضل اجابة ، كنت استخدمها سابقا قبل ان يتم اضافتها الى دلفي في الاصدارات الجديدة
+6 تصويتات

إن كنت تتحدث عن كيفية جعل البرنامج يشتغل آليا بصلاحيات المسؤول بمعنى بالأنجليزية  "Run As Administrator" أو بالفرنسية "lancement du programme en mode administrateur " فالطريقة جد سهلة ولها ثلاثة حلول:

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

  • الطريقة الثانية : و كما سميتها أنت بالطريقةالبرمجية فمثلا في الدلفي 7 ====> فهي تعتمد كذلك على ملف "Manifest " و هي طريقة أيضا سهلة و يدوية أكثر
  • أولا  إفتح محرر النصوص "NotePad" و إنسخ عليه هذا السكريبت التالي  :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
	<application> 
		<!--The ID below indicates app support for Windows Vista -->
		<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
		<!--The ID below indicates app support for Windows 7 -->
		<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
		<!--The ID below indicates app support for Windows 8 -->
		<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
		<!--The ID below indicates app support for Windows 8.1 -->
		<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
		<!--The ID below indicates app support for Windows 10 -->
		<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>			
	</application> 
</compatibility>
</assembly>

و قم بتسجيله بأي إسم مثلا "MyManifest" و لكن بإمتداد "Manifest.*" و أن يكون الأسم من دون فراغ مثلا "My Manifest" بمعنى بعد التسجيل يصبح الملف بإسم : "MyManifest.Manifest" و بعدها إفتح محرر النصوص "NotePad" مجددا و في صفحة جديدة و إنسخ عليه هذا السطر هنا:

1 24 "MyManifest.manifest"

ثم قم بتسجيلة بأي إسم مثلا بنفس الأسم "MyManifest" و أن يكون الأسم أيضا من دون فراغ و من إمتداد "rc.*" بمعنى بعد التسجيل يصبح الملف بإسم : "MyManifest.rc" و بعدها الخطوة الأخيرة بقي لنا كيف نصنع ملف الرسورس؟ و الذي من خلاله يصبح برنامجنا يشتغل  آليا بصلاحيات المسؤول و هذا من نسخة وينداوز "Vista" فما فوق ... المهم :

  • الطريقة سهلة للغاية و ذلك عن طريق الدلفي "IDE": ما عليك فعله هو فقط أن تقوم بنسخ الملفين السابقين ذكرهما "MyManifest.rc"  و  "MyManifest.Manifest بالقرب من البرنامج أي أين يوجد ملف  " dpr " و إتباع الصورة المتحركة أدناه :

  • الطريفة الثالثة: اليدوية عن طريق أي برنامج للتعديل غلى الرسورس و أشهرها "PE Explorerو هذه الحالة إستثنائية بمعنى أنت لديك برنامج من دون كود سورس و تريد أن تجعله يشتغل آليا بصلاحيات المسؤول فما عليك سوى إتباع الخطوات في الصورة أدناه:

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

procedure RunAsAdmin(hWnd : HWND; aFile : String; aParameters : String);
Var
 Sei : TShellExecuteInfoA; // uses  ShellAPI; أضف هذه الوحدة عند اليوزس
begin
 Fillchar(sei,SizeOf(sei),0);
 sei.cbSize := SizeOf(sei);
 sei.Wnd    := hWnd;
 sei.fMask  := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
 sei.lpfile := PChar(aFile);
 sei.lpVerb := 'runas';
 sei.lpParameters := PChar(aParameters);
 sei.nShow := SW_SHOWNORMAL;
 if not ShellExecuteEx(@sei) then
  RaiseLastOSError;
end;

// بإمكانك من خلال هذا الكود منادات أي برنامج بصلاحيات المسؤول حتى و إن كان هذا الأخير نفس البرنامج في حد ذاته
if OpenDialog1.Execute then
 RunAsAdmin(self.Handle,OpenDialog1.FileName,'');

و في الأخير بإمكانك تحميل الأمثلة على شكل كود سورس من هنا

و إن كان سؤالك عن كيفية منادات البرنامج لنفسه ثم بعدها يغلق البرنامج المنادي(أي البرنامج الأول الذي قام بالمنادات) ليبقى فقط البرنامج المنادى(أي البرنامج الثاتي الذي نودي عليه)  فعليك فقط بالتعديل على الكود أعلاه:

procedure TForm1.Button_Call_Self_And_TerminateClick(Sender: TObject);
begin
//  if OpenDialog1.Execute then
  RunAsAdmin(self.Handle,ParamStr(0),'');
  Application.ShowMainForm := False;
  Application.Terminate;
end;

 

تم الرد عليه بواسطة (21,500 نقاط)
عُدل بواسطة
0 تصويتات
ألقي نظرة على هذا الرابط
http://edn.embarcadero.com/article/33942
تم الرد عليه بواسطة (7,660 نقاط)
0
و هنا لتحميل الأمثلة عن السيد : Fredrik Haglund
http://cc.embarcadero.com/Download.aspx?id=27180
والدرس الشامل في صيغة باور بانت : http://cc.embarcadero.com/Download.aspx?id=24730
ملاحطة : لتحميل الملفات لابد أولا من أن تكون مسجلا لدى شبكة المطورين لأمباركاديرو و هذا التسجيل لا يشترط عليك أن تكون قد إشتريت منهم أحد منتوجاتها ..لا بل فقط أن تسجل نفسك في الموقع لديهم . و شكرا.

اسئلة متعلقة

+3 تصويتات
1 إجابة
0 تصويتات
1 إجابة
سُئل مايو 15، 2019 في تصنيف Delphi بواسطة amar34 (250 نقاط) | 85 مشاهدات
0 تصويتات
1 إجابة
سُئل أبريل 24، 2019 في تصنيف Delphi بواسطة Nour Eldeen (320 نقاط) | 94 مشاهدات
+4 تصويتات
2 إجابة
سُئل أكتوبر 18، 2018 في تصنيف Delphi بواسطة Amar Gozim (11,220 نقاط) | 137 مشاهدات
+4 تصويتات
2 إجابة
سُئل يوليو 24، 2018 في تصنيف Delphi بواسطة Amar Gozim (11,220 نقاط) | 627 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

497 سؤال
752 إجابة
1,417 تعليق
271 مستخدم