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

时间:2015-03-05 12:24:53

标签: c# c++ .net clr uac

所以,这是一个奇怪的。

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

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

1 个答案:

答案 0 :(得分:0)

引用自己的另一个问题:

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

看看这个位置,你会看到问题是否来自这里。