Win32当前目录,锁定& shell集成

时间:2009-03-17 02:11:03

标签: windows winapi directory

在Win32中,主线程的当前工作目录设置为可执行文件的启动位置。我的问题是,即使在调用 SetCurrentDirectory()到其他地方之后,该过程显然仍然有一个文件系统对象引用这个初始启动目录(可以使用Process Explorer之类的工具验证) - 这意味着这个导演该过程无法删除。

这里有人知道一个不太苛刻的解决方案吗?我特意遇到一个与explorer集成的程序(向HKCR \ Directory \ shell注册表项添加动词),我需要处理右键单击目录中的文件并删除源目录,这是不可能的因为初始工作目录设置为,你猜对了,右键单击目录。

编辑:我会选择“使用帮助程序从发布目录启动”方法。它可能不是超级优雅,但它可以工作,不需要任何讨厌的黑客。

1 个答案:

答案 0 :(得分:1)

您最简单的解决方案可能是生成一个小助手进程,该进程在您指定的任何目录(c:\,例如)中运行,然后退出并让它执行它的操作。它可能需要与互斥锁同步,或者只是在计时器上重试两次或三次......

我有另一个想法:您可以将CreateFile()与FILE_FLAG_DELETE_ON_CLOSE一起使用。然后当每个人都放弃它时它应该消失,但只有当它用FILE_SHARE_DELETE打开时才会消失。