如何解决如何在Windows上的C ++中实现cd命令
是否可以从Windows上的C ++程序内部在调用CMD控制台中更改目录?
我知道有很多方法可以在程序范围内更改工作目录,例如使用_chdir()
,但我希望在程序退出时保留目录更改。
我希望行为类似于:
C:\Some\Path>MyProgram.exe
C:\Some\Other\Path>
(类似于在控制台中调用cd
)
一种解决方案是将程序包装在.bat
文件中,然后将程序的输出用作cd
命令的输入。但是,我希望这不是必需的。
解决方法
好吧,我还没有检查,但是我很确定您可以使用SetCurrentDirectoryW在父进程中执行CreateRemoteThread。
SetCurrentDirectory
与lpStartAddress
签名匹配,因此应该可以在父进程存储空间中分配带有新目录路径的z终止字符串,并将其作为{{1} }至lpParameter
。技巧是在父进程中获取CreateRemoteThread
的地址 。您应该枚举父流程模块,并使用SetCurrentDirectory
的基地址来计算SetCurrentDirectory
函数的适当偏移量。
要分配字符串,您应该使用VirtualAllocEx并使用WriteProcessMemory将值写入分配的内存。远程线程完成后,应使用Kernel32.dll
释放内存。
您确定该批次不是更简单的解决方案吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。