【问题标题】:Process.MainModule --> "Access is denied" [duplicate]Process.MainModule - >“访问被拒绝”[重复]
【发布时间】:2011-12-08 12:54:19
【问题描述】:

我想以不同的方式处理这个问题, IE。确定我是否有权访问。

是否可以查看您是否可以访问主模块?

foreach (Process p in Process.GetProcesses())
        {
            try
            {
                //This throws error for some processes.
                if (p.MainModule.FileName.ToLower().EndsWith(ExeName, StringComparison.CurrentCultureIgnoreCase))
            {
                 //Do some stuff
            }

            }
            catch (Exception)
            {  
                //Acess denied 
            }
        }

【问题讨论】:

标签: c# process


【解决方案1】:
  [Flags]
  private enum ProcessAccessFlags : uint
  {
      QueryLimitedInformation = 0x00001000
  }

  [DllImport("kernel32.dll", SetLastError = true)]  
  private static extern bool QueryFullProcessImageName(
        [In] IntPtr hProcess,
        [In] int dwFlags,
        [Out] StringBuilder lpExeName,
        ref int lpdwSize);

    [DllImport("kernel32.dll", SetLastError = true)]
  private static extern IntPtr OpenProcess(
     ProcessAccessFlags processAccess,
     bool bInheritHandle,
     int processId);

String GetProcessFilename(Process p)
{ 
 int capacity = 2000;
 StringBuilder builder = new StringBuilder(capacity);
 IntPtr ptr = OpenProcess(ProcessAccessFlags.QueryLimitedInformation, false, p.Id);
 if (!QueryFullProcessImageName(ptr, 0, builder, ref capacity))
 {
    return String.Empty;
 }

 return builder.ToString();
}

将 pinvoke 与 ProcessAccessFlags.QueryLimitedInformation 一起使用。这将允许您在没有特殊管理员权限的情况下获取进程的文件名,并且可以跨 x32 和 x64 进程工作。

【讨论】:

  • 那只是返回一个空字符串。
  • 可能特定于您的系统 - 特权或进程本身。
【解决方案2】:

我发现异常的两个可能原因:

  1. 可能您的进程是 x86,而被查询的进程是 x64,反之亦然。
  2. 每个进程都有一个所谓的 ACL(访问控制列表)来描述谁可以与之交互,出于安全原因,您遇到问题的进程有一个空 ACL,因此即使作为管理员,您也不能乱用它们。例如,由于访问权限,有一些进程(audiodg、System 和 Idle)会抛出异常。

只需在循环中使用 try/catch 即可处理这些过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 2013-11-02
    • 2011-09-10
    • 2013-09-30
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多