【发布时间】:2017-12-22 11:24:31
【问题描述】:
这是我编写的打开进程的代码:
[DllImport("kernel32.dll", SetLastError = true)]
private static extern UIntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool CloseHandle(UIntPtr hObject);
private const uint PROCESS_QUERY_INFORMATION = 0x0400;
public static void processInfo() {
uint PID = 3144;
UIntPtr handle = UIntPtr.Zero;
handle = OpenProcess(PROCESS_QUERY_INFORMATION, false, PID);
Console.WriteLine(Marshal.GetLastWin32Error());
Console.WriteLine(handle);
if (!handle.Equals(UIntPtr.Zero)) {
CloseHandle(handle);
}
}
Marshal.GetLastWin32Error() 为任何进程返回错误 1150。来自 MSDN:
"ERROR_OLD_WIN_VERSION:指定的程序需要更新的版本 窗户。”
我在 Visual Studio 2015 Community Edition 的 Windows 2008 R2 中运行此代码。 Target Framework 在项目设置中设置为“.NET Framework 4.5.2”。
此外,OpenProcess 似乎仍然能够完成它的工作,因为返回的句柄不为零。我应该担心这个错误吗?
【问题讨论】: