Windows CurDir函数-它的低级声明是什么?是否有Unicode版本?

Windows CurDir函数-它的低级声明是什么?是否有Unicode版本?,windows,path,filesystems,relative-path,Windows,Path,Filesystems,Relative Path,对于真正的Studio程序,我需要查询特定驱动器号的当前目录,因为它出现在如下路径中: d:filename 注意,它是D:上的一个相对路径 有一个GetCurrentDirectory函数,但它不允许我指定D驱动器,因此在这里没有用处 我找到了CurDir函数,这是我在功能上所需要的,但是我在MSDN站点上找不到关于它所在DLL的任何信息,也找不到它在该DLL中导出的名称 我试过名称CurDir和CurDirA,DDL名称user32.dll、win32.dll和kernel32.dll 此

对于真正的Studio程序,我需要查询特定驱动器号的当前目录,因为它出现在如下路径中:

d:filename
注意,它是D:上的一个相对路径

有一个GetCurrentDirectory函数,但它不允许我指定D驱动器,因此在这里没有用处

我找到了CurDir函数,这是我在功能上所需要的,但是我在MSDN站点上找不到关于它所在DLL的任何信息,也找不到它在该DLL中导出的名称

我试过名称CurDir和CurDirA,DDL名称user32.dll、win32.dll和kernel32.dll


此外,提供给VB的CurDir函数似乎返回ASCII字符串,而不是Unicode字符串。是否有Unicode版本,例如“CurDirW”

Windows不为单独的驱动器维护单独的当前目录。DOS和cmd.exe通过记住每个驱动器的值来模拟这一点。在cmd.exe中更改驱动器时,它会设置当前目录,包括驱动器。如果你想要同样的功能,你必须自己做


Raymond Chen在博客中写道:

不过我确实想支持cmd.exe。i、 例如,如果cmd.exe传递了类似于d:filename-hmm的内容,我的实用程序应用程序将能够找到完整路径,或者可能测试设置错误,cmd.exe将给出解析路径。我必须仔细检查……你必须逆向工程cmd跟踪事物的方式。阅读雷蒙德的文章。它提到了特殊的环境变量,但这是在批处理脚本执行的上下文中。您可能无法获取该信息。顺便说一句,虽然答案可能对您不方便,但它仍然是您问题的答案。如果cmd.exe要调用您的应用程序并传递d:filename,即使当前工作目录位于不同的驱动器上,然后我怀疑cmd.exe会自动为您扩展路径。如果没有,那么就很难使用未在cmdshell中解释的控制台应用程序。如果它不能做到这一点,那么你唯一真正的希望就是一些神奇的环境变量可以帮助你!我只是再次测试了一下:不,cmd.exe不会扩展路径。如果我使用z:file调用一个工具,那么这正是传递给应用程序的内容,不会发生扩展。这意味着,如果cmd.exe没有向应用程序显示其当前目录,则说明存在问题。还有CurDir,那是怎么回事?在这一点得到澄清之前,我不能接受你的答案,因为这会提示Windows中存在设计问题,我不相信这一点,因为DOS诞生以来就存在这一功能