一般软件的可执行程序文件一般在:
示例飞书:
计算机\HKEY_CURRENT_USER\SOFTWARE\Feishu 该路径下会有安装路径,以及产品名字。
但是也有这路径下找不到,比如photoshop,
这时候就可以用到CLSID了(一般大型的软件会写入CLSID,因为它的驱动,服务,组件比较多,小软件参考上面飞书)
std::wstring wszSid = getAIPath(processPath, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Photoshop.IndexedConversionOptions\\CLSID");
if(wszSid.isEmpty())
wszSid = getAIPath(processPath, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Photoshop.IndexedConversionOptions.150\\CLSID");
std::wstring wszExePath = std::wstring.format("HKEY_CLASSES_ROOT\\CLSID\\%0\\LocalServer32").arg(clsid);
有可能写在两个地方去查找到photoshop对应的sid,在通过sid查找进程的路径。