C语言中的欺骗程序

C语言中的欺骗程序,c,portable-applications,C,Portable Applications,假设我从我制作的程序中启动一个程序。是否有可能欺骗已启动的程序,使其认为windows目录位于不同的位置?windows目录的位置在注册表中。Vista可能允许您按用户进行更改,但据我所知,按进程进行更改是不可能的。这将很困难。程序可能会使用几个系统API来确定windows目录的路径。为了欺骗它,您需要拦截程序对任何API的调用,并返回不同的结果 有很多关于在Windows上拦截API的文章:这是我在Google上找到的第一篇:。如果它使用%windir%或%systemroot%环境变量来确

假设我从我制作的程序中启动一个程序。是否有可能欺骗已启动的程序,使其认为windows目录位于不同的位置?

windows目录的位置在注册表中。Vista可能允许您按用户进行更改,但据我所知,按进程进行更改是不可能的。

这将很困难。程序可能会使用几个系统API来确定windows目录的路径。为了欺骗它,您需要拦截程序对任何API的调用,并返回不同的结果


有很多关于在Windows上拦截API的文章:这是我在Google上找到的第一篇:。

如果它使用%windir%或%systemroot%环境变量来确定Windows目录,那么更改它们肯定很容易。但是,如果它使用API调用,则必须钩住该调用,如图所示。您可以看一看。

伪造windows目录的位置通常不会被执行。我自己的反应与上面的反应类似,如果可能的话,那将是一场灾难


如果您可以在一个新问题中更详细地解释您的情况,可能会有更好的建议来解决您的实际潜在问题。

Windows Directroy和便携式应用程序?那是错误的。它与C无关。要不要重新标记和重新标记?我将用C编程,我这样做的目的是使应用程序可移植。你所描述的几乎与可移植相反,正如软件开发人员通常使用的术语:无需修改即可在各种操作系统或处理器体系结构上编译和执行的代码。一旦你假设有windows目录这样的东西,你就把自己限制在windows上运行了。我意识到我没有使用portable编程定义的传统含义。然而,我查看了便携应用程序部分,他们在中讨论了便携,因为我可以将一个应用程序从一个系统转移到另一个类似的系统,而无需依赖新系统win dir中的文件。根据您所说的,您几乎肯定是在尝试使用错误的工具来完成此工作。