用GetModuleFileName获取程序路径得到形如:“D:\\test\\test.”,扩展名exe不见了,且GetModuleFileName返回值不为0,可是在里面同样安装的另一程序获取就没有问题。请问有没有清楚是什么原因造成的

解决方案 »

  1.   

    DWORD GetModuleFileName(
        HMODULE hModule,
        LPTSTR lpFilename,
        DWORD nSize
    );
    nSize是不是太小?
      

  2.   

    #1 不是啊,size = 260,而且就放在根目录下,这个大小足够用了
      

  3.   

    你exe的全路径是D:\\test\\test.exe,但是GetModuleFileName获取到的是D:\\test\\test.是这个意思吧?
    你说的260应该是MAX_PATH。
    首先,把你调用GetModuleFileName的段落代码贴上来
    另外
    TCHAR path[MAX_PATH];
    GetModuleFileName(NULL,path,MAX_PATH)
    这样调用试试。
      

  4.   

    #3char szFile1[MAX_PATH];
    memset(szFile1, 0, MAX_PATH);
    if(GetModuleFileName(NULL, szFile1, MAX_PATH - 1) == 0)
    {
    memset(szLog, 0, 128);
    sprintf_s(szLog, 127, "1出现错误,错误代码%d", GetLastError());
    LogFile(szLog);
    }
      

  5.   

    非常奇怪的现象:就这个exe不好用,换了一个就好用了,放在别的电脑上也是好用的。
      

  6.   

    传 MAX_PATH 不需要 MAX_PATH - 1。不过不知道为何出错,你可以重启电脑试试,可能是偶然情况吧。