【问题标题】:C# - Access denied when trying to get process's handleC# - 尝试获取进程句柄时访问被拒绝
【发布时间】:2023-03-27 11:55:01
【问题描述】:

我正在尝试获取进程的句柄,但我收到一条错误消息“拒绝访问”。这是我的代码:

namespace Program
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr sign = Process.GetProcessesByName("thatProgram")[0].Handle;
        }
    }
}

似乎这适用于除此特定程序之外的所有程序。 你能帮帮我吗?

【问题讨论】:

  • 该进程是否以同一用户身份运行?
  • 我怎么知道?感谢您的快速答复。
  • 好吧,我刚刚使用了任务管理器,看来它们确实以同一用户身份运行。
  • 您使用什么操作系统?您的应用是 x86 还是 x64?那么这个 wakfu.exe... x86 还是 x64 呢?
  • 您是否尝试将代码拆分为Process [] procs = Process.GetProcessesByName("wakfu.exe"); IntPtr prochandle = procs[0].Handle 并检查哪一行失败(当然,如果第一行成功,procs[] 中的详细信息是什么

标签: c# process handle


【解决方案1】:

也许您尝试获取系统进程的句柄或由另一个用户启动的进程(后者只有在您的应用程序以管理员身份启动时才有可能)

【讨论】:

  • 这似乎是我的情况。我也确认这一点。另见 SecurityAction { LinkDemand=6; } 另见'SecurityCriticalAttribute' 类
【解决方案2】:

尝试 process.MainWindowHandle 代替句柄

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多