Prozess Pfad ermitteln Problem (Zugriff Verweigert)

  • C#

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Derfuhr.

    Prozess Pfad ermitteln Problem (Zugriff Verweigert)

    Guten Tag Community,

    Ich habe in kleines Problem beim Pfad ermitteln der laufenden Prozesse.

    Soweit bin ich bis jetzt :

    Quellcode

    1. Process[] processes = Process.GetProcesses();
    2. foreach (Process dprocess in processes)
    3. {
    4. string fullpath = dprocess.MainModule.FileName; // Zugriff verweigert (Exception)
    5. for (int i = 0; i < antiprocess.Length; i++)
    6. {
    7. if (computeHash(fullPath) == antiprocess[i])
    8. {
    9. }
    10. }
    11. }



    Bei : string fullpath = dprocess.MainModule.FileName;
    Kommt Zugriff verweigert während dem Programm

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „AtomTiger“ ()

    Das liegt vermutlich daran, dass du als normaler User nicht alle Prozesse anschauen darfst.

    Starte dein Programm als Administrator und die Exception sollte nicht mehr auftreten. Je nach dem was du machen willst, solltest du eventuell eine bessere Lösung evaluieren.
    Von meinem iPhone gesendet
    Ich hatte mit VB und Process.MainModule.FileName auch mit Adminrechten immer wieder ein System.ComponentModel.Win32Exception umme Ohren bekommen. Hab es dann so gelöst: Wichtig: Es muss ein Verweis auf System.Managment gemacht werden, Adminrechte Empfehlenswert, da sonst sehr wenige Infos zurückkommen.

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. using System.Management;
    7. using System.Diagnostics;
    8. namespace ConsoleApplication1
    9. {
    10. class Program
    11. {
    12. static void Main(string[] args)
    13. {
    14. Process[] Pa = Process.GetProcesses();
    15. foreach (Process P in Pa)
    16. {
    17. string retval = GetPath(P);
    18. if (retval != "")
    19. {
    20. Console.WriteLine(GetPath(P));
    21. }
    22. }
    23. Console.ReadKey();
    24. }
    25. static private string GetPath(Process P)
    26. {
    27. ManagementObjectSearcher MOS = new ManagementObjectSearcher("SELECT ExecutablePath, ProcessID FROM Win32_Process");
    28. foreach (ManagementObject P_Data in MOS.Get())
    29. {
    30. if (P_Data["ExecutablePath"] != null && P_Data["ProcessID"].ToString() == P.Id.ToString())
    31. {
    32. return P_Data["ExecutablePath"].ToString();
    33. }
    34. }
    35. return "";
    36. }
    37. }
    38. }