启动进程并将 DLL 注入其中的 C++/CLR 应用程序仅在非 运行 作为管理员时才有效

C++/CLR application that starts a process and injects a DLL into it only works when not ran as admin

所以,这是一个奇怪的。

我有一个加载 C++/CLR DLL 的 .NET 应用程序,它依次启动一个进程(使用 CreateProcess)并向其中注入一个 DLL(使用远程线程方法)。但是,当您以管理员身份启动 .NET 应用程序和以普通用户身份调用它时,新创建的进程(这是一个游戏)具有完全不同的结构。它的纹理包含在游戏根目录中的文件中。如果我将它构建为一个独立的程序——没有 CLR——并且 运行 它,我的进程创建代码工作正常,所以它不可能是那样。

这可能是什么原因造成的?这与我开始的游戏无关,我敢肯定。游戏从中读取内容的目录仅供管理员使用,因此 运行 以管理员身份运行 .NET 应用程序自然应该可以让我访问。但我得到的恰恰相反——只有当我 运行 它没有管理员权限时它才有效。

引用我自己的另一个问题:

某些位置,例如 "Program Files",在最新版本的 Windows 上受到保护。如果您的程序不是 运行 管理员并尝试访问受保护的位置,read/write 操作将被静默重定向到 C:\Users\MYNAME\AppData\Local\VirtualStore\MY\FOLDER\PATH。 运行 你的程序作为管理员应该在任何地方纠正它。

看看这个位置,你就会知道问题是否出自这里。