C# - 尝试获取进程句柄时访问被拒绝

Posted

技术标签:

【中文标题】C# - 尝试获取进程句柄时访问被拒绝【英文标题】:C# - Access denied when trying to get process's handle 【发布时间】:2012-07-07 20:39:51 【问题描述】:

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

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[] 中的详细信息是什么 【参考方案1】:

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

【讨论】:

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

尝试 process.MainWindowHandle 代替句柄

【讨论】:

以上是关于C# - 尝试获取进程句柄时访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

像任务管理器(Windows 8)一样杀死进程,因为访问被拒绝

在 C# 中访问路径被拒绝错误

Directory.Exists - 访问被拒绝 C# 的 UNC 路径

为啥当我尝试移动目录时访问被拒绝?

尝试通过 oauth 进行身份验证时访问被拒绝

dotnet 6.0 C# - 访问路径被拒绝