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)一样杀死进程,因为访问被拒绝