[英]Win32 current directory, locking & shell integration
在 Win32 中,主线程的当前工作目录设置为启动可执行文件的位置。 我的问题是,即使在对其他地方调用SetCurrentDirectory()之后,该进程显然仍然有一个文件系统 object 引用此初始启动目录(可使用 Process Explorer 之类的工具进行验证) - 这意味着该目录无法被进程删除。
这里有人知道一个不太老套的解决方案吗? 我特别遇到了与资源管理器集成的程序的问题(向 HKCR\Directory\shell 注册表项添加动词),我需要处理右键单击目录中的文件并删除源目录,这是不可能的因为初始工作目录设置为,您猜对了,右键单击的目录。
编辑:我将 go 用于“使用帮助程序从 sane 目录启动”方法。 它可能不是超级优雅,但它可以工作并且不需要任何讨厌的黑客攻击。
您最简单的解决方案可能是只生成一个在您指定的任何目录(c:\,例如)中运行的小助手进程,然后退出并让它做它的事情。 它可能需要与互斥锁同步,或者可能只是在计时器上重试两到三次......
我有另一个想法:您可以将 CreateFile() 与 FILE_FLAG_DELETE_ON_CLOSE 一起使用。 然后它应该 go 当每个人都让 go 离开时,但前提是它是用 FILE_SHARE_DELETE 打开的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.