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


أنا أبحث عن أداة أو طريقة لمعرفة ما تم تمرير معلمات سطر الأوامر إلى أحد البرامج ، على سبيل المثال عندما تم تشغيله بواسطة برنامج آخر (سيناريو تطبيق المشغل).


73
2018-04-22 14:36


الأصل




الأجوبة:


يمكنك القيام بذلك باستخدام عملية المستكشف.

ما عليك سوى تحريك الماوس فوق عملية لمعرفة وسيطات سطر الأوامر المستخدمة لبدء تشغيله:
enter image description here

بدلا من ذلك ، يمكنك فتح الخصائص من العملية وتفقد سطر الأوامر هناك حق:
enter image description here


63
2018-04-22 14:39



هذا رائع حقا. - cutrightjm
لسوء الحظ ، يبدو أنه لا يعمل مع التطبيقات المحمية بواسطة WinLicense / Themida: oreans.com/winlicense.php أي أفكار أخرى؟ - Gepard
Gepard: كيف تعرف أنها لا تعمل؟ هل أنت متأكد من أن التطبيق ، في الواقع ، دعا مع حجج سطر الأوامر؟ وفي كلتا الحالتين ، يستخدم PE طريقة ويندوز لتحديد تلك المعلومات. أي شيء آخر يجب أن يكون مصممًا خصيصًا لتطبيق معين ، أفترض. - Der Hochstapler
بلدي سيئة ، لم يكن تشغيل PE مرتفعة. انها تعمل على النحو المنشود. - Gepard
OliverSalzburg ، كيف يعمل هذا البرنامج؟ هل يمكن لأي برنامج C طبيعي أن يحقق ذلك؟ - Pacerier


يمكنك القيام بذلك دون استخدام Process Explorer أيضًا ، وذلك باستخدام خدمة Windows 'WMI. قم بتشغيل ما يلي من موجه الأوامر:

WMIC path win32_process get Caption,Processid,Commandline

إذا كنت تريد تفريغ الإخراج إلى ملف (يجعله أسهل قليلاً قراءة) ، استخدم رمز التبديل / OUTPUT:

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline

77
2017-12-15 17:29



جميل كيف عرفت هذا؟ - Pacerier
@ Pacerier: لست متأكداً من أن أكون صادقاً ؛-) أعتقد أنه جاء من الحفر حول مستندات WMI واللعب لأنني كنت بحاجة لاستخدام WMI لشيء في ذلك الوقت. - Andy E
أي مستندات WMI تقصد؟ - Pacerier
كانت هذه طريقة سطر أوامر مفيدة جدًا للحصول على سطر أوامر عملية التشغيل. في حالتي ، تمكنت من تعديل هذا قليلاً للحصول على الإخراج فقط لعملية محددة: مسار win32_process في WMIC حيث "caption = 'cmd.exe'" get Commandline - chriv
رائع ، وعبارة المكان حيث تدعم بالفعل بعض ميزات SQL ، على سبيل المثال ، حيث "name like 'cmd.٪" - zhaorufei


يمكن للمرء أيضا تحقيق ذلك عن طريق استخدام مدير المهام.

افتح إدارة المهام (بواسطة CTRL-SHIFT-ESC أو CTRL-ALT-DELETE أو أي طريقة أخرى).

بالنسبة لنظام التشغيل Windows 7 (وربما Windows XP):

  • انتقل إلى علامة التبويب "العمليات". في القائمة "عرض" ، حدد "تحديد الأعمدة ...".
  • حدد مربع الاختيار "سطر الأوامر" وانقر فوق موافق. (قد تضطر إلى التمرير للعثور عليه)

لنظام التشغيل Windows 8:

  • انتقل إلى علامة التبويب "التفاصيل". انقر بزر الماوس الأيمن فوق أي من الأعمدة (على سبيل المثال ، الأسماء ، PID إلخ) وحدد "تحديد الأعمدة".
  • حدد مربع الاختيار "سطر الأوامر" وانقر فوق موافق. (قد تضطر إلى التمرير للعثور عليه)

سيتم إضافة عمود من أسطر الأوامر إلى الأعمدة المعروضة حاليًا.


29
2017-10-03 07:28



أنا حقا لا تحصل علىJesseBarnum ، يمكن للمرء دائمًا تغيير حجم العمود للحصول على عرض كامل بغض النظر عن مدى طول سطر الأوامر ، أليس كذلك؟ - Jeromy Adofo
فقط إذا كانت النافذة واسعة بما فيه الكفاية لحجم الأمر. إذا كان الأمر يشبه عملية Java مع مسار طويل ، فلن يلائم ذلك عرض النافذة. - Jesse Barnum
شكرا جيدا ، لاحظت. لم تتح لي هذه المشكلة على الرغم من الطريقة التي يكون بها مدير المهام قابل للتمرير - لا أعرف عنك :-). أعتقد أنه إذا كان بإمكانك أن ترسل لي عينة من البرنامج لمحاولة ذلك ، فيمكنه حلها. - Jeromy Adofo
هذه إجابة مُخفَّضة إلى حد كبير ، لم يكن لديها أي فكرة بأن هذا ممكن. - Hashim
أرى اثنين من التعليقات أعلاه حول إدارة مهام Windows. حتى إذا قمت بتعيين عمود "سطر الأوامر" لإظهار عملية جافا مع سطر أوامر طويل بالفعل سيتم اقتطاعها. ولكن ، يمكنك النقر فوق الصف في إدارة المهام و "نسخ" (Ctrl-c) الصف بأكمله ولصق هذا في محرر نص لرؤية سطر الأوامر بأكمله ، بغض النظر عن المدة. - JohnD


powershell للانقاذ.

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }

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


4
2017-08-07 05:46



قف ... جزء القتل خطير جدا ، نظرا لعنوان السؤال ؛) Otheriwse إجابة أنيقة جدا ؛) - Tom


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

بشكل أساسي ، يتم تسجيل الأحداث المختلفة في النظام ، وفي هذه الحالة يمكننا فقط تصفية حدث "بدء المعالجة" واسم العملية التي نريد مراقبتها ، كما هو موضح أدناه:

enter image description here

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

enter image description here

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


3
2018-01-27 10:39





عند استخدام سيغوينإذا بدأت الثعبان العملية ، هذا مثال على سطر الأوامر:

c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py

لكن عملية المستكشف يرى فقط exe الرئيسي:

Process Explorer not detecting full command line of Python process

(لاحظ ال "path: [رسالة عملية فتح الخطأ]" (انظر EDIT-1)). نفس النتائج ل tasklist:

C:\>tasklist | find "python" /i
python2.7.exe                 5740 Console                    1    15.312 KB

لذا ، فإن الخدعة الوحيدة التي أعرفها حتى الآن هي العثور عليها CygWin Bash shell  pgrep:

Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py

من المفيد معرفة ذلك ، طالما أن CygWin يتعايش بدون مشاكل في Windows ، ويمكنك استخدامه لتشغيل العديد من برامج POSIX و Python.

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

EDIT-1: لن تحدث هذه المشكلة إذا قمت بتشغيل Process Explorer كمسؤول. شكراً لك على الإشارة ، @ Pacerier.


1
2018-04-07 15:07



إذا قمت بتشغيل كمسؤول لن ترى [Error opening process message] - Pacerier
كنت على حق ، @ Pacerier. من الواضح جدا أن نتذكر :-). شكرا لك. لقد قمت بتحرير منصبي لتعكسه. - Sopalajo de Arrierez


اذهب إلى run او اذهب الى start والبحث:

tasklist -m

tasklist -svc

-3
2017-11-02 04:46



لا يظهر سطر أوامر الاستدعاء. /m يظهر وحدات محملة (DLLs ، الخ) و /svc يعرض الخدمات المستضافة في كل عملية. - Bob