C / C ++确定程序正在运行的驱动器

时间:2009-07-10 07:00:57

标签: c++ c winapi

我在代码中识别闪存驱动器时遇到了问题。

幸运的是我的代码可以从闪存驱动器运行。那么在C(或C ++)中是否有一种方法可以告诉运行程序的驱动器号(或驱动器名)?

我需要知道的原因是当我插入USB驱动器时,它正在运行一个程序,将文件从计算机复制到USB驱动器本身。

3 个答案:

答案 0 :(得分:4)

GetModuleFileName可以找到你的司机信,如:

TCHAR ExeName[MAX_PATH];
GetModuleFileName(NULL, ExeName, MAX_PATH);
TCHAR DriveLetter = ExeName[0];

您可能会发现GetDriveType API也很有用。

答案 1 :(得分:1)

您可以使用ISO C ++ _getcwd函数来获取应用程序的当前工作目录,如下所示:

#include <direct.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char buf[255];
    _getcwd(buf,255);
    printf("%c",buf[0]);
    return 0;
}

char数组buf将包含可执行文件的路径,buf [0]应该只提供驱动器的字母。

答案 2 :(得分:-2)

在C / C ++程序的某个地方,你应该有一个主要的

如int main(int argc,char ** argv)

argv的第一个参数保存应用程序的路径

编辑:

Windows和Linux之间有所不同。以下程序输出因平台而异:

#include <iostream>

int main(int argc, char** argv) {

    std::cout << argv[0] << std::endl;
    return 0;
}

在Windows上:(Visual Studio 2015)

  

C:\ ConsoleApplication1 \调试\ ConsoleApplication1.exe中

在Linux上:(使用g ++在线编译器)

  

主要

我猜测使用的确切编译器是无关紧要的,因为提供这些参数的操作系统工作。