c# - 启动进程并将 DLL 注入(inject)其中的 C++/CLR 应用程序仅在未以管理员身份运行时才有效

标签 c# c++ .net clr uac

所以,这很奇怪。

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

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

最佳答案

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

一些位置,如“程序文件”,在最新版本的 Windows 上受到保护。如果您的程序未以管理员身份运行并尝试访问 protected 位置,则读/写操作将静默重定向到 C:\Users\MYNAME\AppData\Local\VirtualStore\MY\FOLDER\PATH。以管理员身份运行您的程序应该在任何位置更正此问题。

看看这个位置,你会发现问题是否出自这里。

关于c# - 启动进程并将 DLL 注入(inject)其中的 C++/CLR 应用程序仅在未以管理员身份运行时才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28877832/

相关文章:

.net - 绑定(bind)到 WPF 中的方法?

c# - .NET 应用程序位置中的离线安全性在代码中存储混淆 key

C# 与基于列表的属性相等

c++ - 使用 Kruskal 算法查找最小生成树时出现错误

c# - 限制线程池中使用的处理器数量

c++ - *& 关于 C++ 中的指针

c++ - 将 size_t 转换为 vector<unsigned char>

.net - Mono 中的 RPC 选项? (WCF 替代品)

c# - Windows 窗体应用程序中未处理的异常

c# - 如何从用户控件调用一个方法到aspx页面?