c# kernel32.dll readprocessmemory windows 11 返回错误 299

问题描述 投票:0回答:1

我使用 C# PInvoke 实现了 kernel32.dll 中的 ReadProcessMemory 函数。在 Windows 10 上编译和安装它可以完美运行。但是,在 Windows 11 中安装相同的程序,无论是否以管理员权限运行都会抛出错误 299。

这是c#代码:

[DllImport("kernel32.dll", SetLastError = setLastError)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ReadProcessMemory(
    [In] IntPtr hProcess,
    [In] IntPtr lpBaseAddress,
    [Out] byte[] lpBuffer,
    [In] UIntPtr dwSize,
    [Out] out UIntPtr lpNumberOfBytesRead
);

我使用 Process.Handle 作为 hProcess。但由于它在 Windows 10 上运行,相同的编译代码,没有重新编译,我无法想象它是错误的。最有可能的是 Windows 上的某些设置不允许一个进程读取另一进程的内存,即使我们以管理员权限运行也是如此。

c# readprocessmemory
1个回答
0
投票

执行以下两次 Windows 更新后:

 2024-05 .NET 8.0.5  Security Update for x64 Client (KB5038352)
 2024-05 .NET 6.0.30 Security Update for x64 Client (KB5038350)

它按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.