CCR
1
详述
- 该程序是Windows下使用C#开发的,项目地址:GitHub - DGP-Studio/Snap.Hutao: 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-source Genshin Impact Toolkit 🧰 ,与Microsoft Store性质类似
- 该程序可通过
explorer.exe shell:::{4234d49b-0245-4df3-B780-3893943456e1}
查到,创建快捷方式到桌面以后详细信息显示的是奇怪的内容
- 不能直接通过
"C:\\Program Files\\WindowsApps\\60568DGPStudio.SnapHutao_1.10.4.0_x64__wbnnev551gwxy\\Snap.Hutao.exe"
直接启动该程序,除非使用System权限否则均提示权限不足
- 该程序目前的启动方式是cpp调用ShellExecuteEx函数,主体逻辑地址:Snap.Hutao.Elevated.Launcher/src/Snap.Hutao.Elevated.Launcher/Snap.Hutao.Elevated.Launcher.cpp at main · DGP-Studio/Snap.Hutao.Elevated.Launcher · GitHub
是否还有其他办法启动程序,除了创建快捷方式双击和ShellExecuteEx函数
使用com接口
参考代码
HRESULT LaunchApplication(LPCWSTR pPackageFullName, LPCWSTR pArguments, PDWORD pdwProcessId)
{
IApplicationActivationManager* pAppActivationManager;
HRESULT hr = E_INVALIDARG;
hr = CoCreateInstance(CLSID_ApplicationActivationManager,
NULL,
CLSCTX_LOCAL_SERVER,
IID_IApplicationActivationManager,
(LPVOID*)&pAppActivationManager);
if (!SUCCEEDED(hr)) return hr;
hr = CoAllowSetForegroundWindow(pAppActivationManager, NULL);
if (!SUCCEEDED(hr)) return hr;
IShellItem* pShellItem;
hr = SHCreateItemFromParsingName(pArguments, NULL, IID_PPV_ARGS(&pShellItem));
IShellItemArray* pShellItemArray;
hr = SHCreateShellItemArrayFromShellItem(pShellItem, IID_IShellItemArray, (void**)&pShellItemArray);
hr = pAppActivationManager->ActivateForFile(pPackageFullName, pShellItemArray, L"", pdwProcessId);
return hr;
}
1 个赞
哦仔细看了一下,不需要参数啊,那直接用ActivateApplication方法即可,它会继承当前线程的token,当前线程有特权就有特权,当前没有就没有