我想应该根据注册表,但是那里有信息呢?
谢谢捧场!

解决方案 »

  1.   

    1.enum process and get process id
    DWORD GetProcessIdFromName(LPCTSTR name)
    {
       PROCESSENTRY32 pe;
    DWORD id = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    pe.dwSize = sizeof(PROCESSENTRY32);
    if( !Process32First(hSnapshot,&pe) )
    return 0;
    while(1)
    {
    pe.dwSize = sizeof(PROCESSENTRY32);
    if( Process32Next(hSnapshot,&pe)==FALSE )
    break;
    if(_strnicmp(pe.szExeFile,name,strlen(name)) == 0)
    {
    id = pe.th32ProcessID;
    break;
    }

    };
    CloseHandle(hSnapshot);
    return id;
    }
    DWORD ProcessID=GetProcessIdFromName(SLCC_APPNAME);
    if(ProcessID)
    {
    HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,NULL,ProcessID);

    }
    2.from process id can get file path
    char szPath[256];
    GetModuleFileName(hProcess,szPath,256);
      

  2.   

    先找快捷方式,如果没有就找注册表中某个*.exe。如果还没有就只能查硬盘了。
    以上动作只要做一次,然后记录下来就得了,所以性能可以不太在意。
    装了你的软件后,你的软件应该要在有新软件件被安装时就记录路径。