双浇面 2022-10-13 10:11 采纳率: 0%
浏览 54
已结题

GetModuleFileName 在win11下,桌面快捷方式启动,获取路径还是在桌面。怎么解决?

原来的在win7下,GetModuleFileName可以获取程序的安装路径,现在安装到win11下,直接获取了桌面路径,导致原来要生成的数据库放到了桌面,程序找不到数据库启动不起来了。
GetModuleFileName win11 路径获取问题
在win11下,桌面快捷方式启动,获取路径还是在桌面。
不知道如何解决,因为还需要兼容WIN7
请指导下
  • 写回答

3条回答 默认 最新

  • 双浇面 2022-10-13 15:27
    关注

    还是不行,老样子。我得从win11的programmes下面把文件复制出来,放到桌面上,建个文件夹,然后无论是在文件夹内运行或是发个快捷方式到桌面,都能正常运行了。难道是我根据获取的路径创建数据库的方式有问题。我把获取的路径转换为unicode,然后再该路径下自动生成数据库。

    char* CDataBase::AnsiToUtf8(char* str)
    {
    WCHAR* strA;
    int i= MultiByteToWideChar(CP_ACP,0,str,-1,NULL,0);
    strA = new WCHAR[i];
    MultiByteToWideChar(CP_ACP,0,str,-1,strA,i);

    i=   WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);    
    char   *strB=new   char[i];    
    WideCharToMultiByte(CP_UTF8,0,strA,-1,strB,i,NULL,NULL);    
    //strB即为所求    
    return   strB;
    

    }

    评论

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 创建了问题 10月13日