كيف يمكنني إنهاء عملية، باستخدام VBScript، بدأها مستخدم معين

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

سؤال

لدي عدة مستخدمين يقومون بتشغيل المرفق على خادم يعمل بنظام التشغيل Windows 2003.أريد قتل Attachemate.exe الذي بدأ بواسطة user_1 دون قتل Attachemate.exe الذي بدأ بواسطة user_2.

أريد استخدام VBScript.

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

المحلول

يمكنك استخدام هذا لمعرفة من هو مالك العملية، وبعد ذلك يمكنك استخدام Win32_Process لإيقاف العملية بواسطة معرف العملية.

تفاصيل فئة MSDN Win32_Process

MSDN إنهاء عملية باستخدام Win32_Process

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

strComputer = "."
strOwner = "A111111"
strProcess = "'notepad.exe'"

' Connect to WMI service and Win32_Process filtering by name'
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colProcessbyName = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " _
    & strProcess)

' Get the process ID for the process started by the user in question'
For Each objProcess in colProcessbyName
    colProperties = objProcess.GetOwner(strUsername,strUserDomain)
    if strUsername = strOwner then
        strProcessID = objProcess.ProcessId
    end if
next

' We have the process ID for the app in question for the user, now we kill it'
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" & strProcessID)
For Each objProcess in colProcess
    objProcess.Terminate()
Next

نصائح أخرى

اخرج إلى pskill من http://sysinternals.com/

سطر الأوامر:pskill -u user_1 Attachemate.exe

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top