هل يستطيع .NET التحقق من معلمات سطر أوامر البرامج قيد التشغيل الأخرى؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

لدينا حالة مثيرة للاهتمام حيث نحاول تحديد كيفية إطلاق المثيلات المختلفة لتطبيقنا.هل هناك أي طريقة تمكن .NET من الاستعلام عن مثيل آخر قيد التشغيل وتمرير معلمات سطر الأوامر إلى هذا المثيل؟لم أتمكن من العثور على أي طريقة للقيام بذلك في .NET حتى الآن، لذا فكرت في التحقق هنا لمعرفة ما إذا كان أي شخص قد فعل شيئًا كهذا من قبل.

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

المحلول

يمكنك استرداد هذه المعلومات من خلال WMI.

انظر Win32_Process الفئة، وخاصة خاصية سطر الأوامر الخاصة بها.هذا مقالة مشروع الكود ويقدم مؤشرات حول كيفية القيام بذلك،

نصائح أخرى

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

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

-آدم

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

try
{
   ManagementScope connectScope = new ManagementScope();
   connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2");

   SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'");
   ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery);

   foreach (ManagementObject item in searchProcedure.Get())
   {
      try 
      {
         MessageBox.Show(item["CommandLine"].ToString()); 
      }
      catch (SystemException) 
      {}
   }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top