有没有 windows 编程的小伙伴

查看 117|回复 5
作者:gesse   
现在需要写一个启动器,要去获取一个安装了的软件的位置,并且加上启动参数启动。写入快捷方式不行,因为软件升级会重新恢复快捷方式。
获取 windows 下安装软件的位置有什么好的方法没有?

启动器, Windows, 软件, 快捷

mercury233   
读注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths
mercury233   
也可能是 HKEY_LOCAL_MACHINE
ye4tar   
什么软件,自用还是怎么的,我来写
coderluan   
HKEY hKey;
TCHAR szPath[MAX_PATH];
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
TCHAR szSubKey[MAX_PATH];
DWORD dwSubKeyLen = sizeof(szSubKey);
for (DWORD i = 0; RegEnumKeyEx(hKey, i, szSubKey, &dwSubKeyLen, NULL, NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS; i++, dwSubKeyLen = sizeof(szSubKey))
{
HKEY hSubKey;
if (RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS)
{
TCHAR szValue[MAX_PATH];
DWORD dwValueLen = sizeof(szValue);
if (RegQueryValueEx(hSubKey, L"DisplayName", NULL, NULL, (LPBYTE)szValue, &dwValueLen) == ERROR_SUCCESS)
{
if (_wcsicmp(szValue, L"Program Name") == 0) // 替换成要查询的程序名称
{
dwValueLen = sizeof(szValue);
if (RegQueryValueEx(hSubKey, L"InstallLocation", NULL, NULL, (LPBYTE)szValue, &dwValueLen) == ERROR_SUCCESS)
{
wcsncpy_s(szPath, MAX_PATH, szValue, MAX_PATH);
break;
}
}
}
RegCloseKey(hSubKey);
}
}
RegCloseKey(hKey);
}
manhere   
查注册表对很多绿色软件是没用的,不如查找桌面文件夹快捷方式
您需要登录后才可以回帖 登录 | 立即注册

返回顶部