从服务打开 UWP 应用程序



我正在尝试使用我创建的服务中的CreateProcessAsUser启动应用程序和进程。我尝试打开记事本,IE等应用程序的成功。但是我在尝试打开 Groove 音乐(这是一个 UWP 应用程序)时遇到了障碍。

当我尝试从命令提示符打开 Groove 音乐时,该文件夹被隐藏并且访问被拒绝。

STARTUPINFO si;
PROCESS_INFORMATION pi;
LPTSTR szCmdline = _tcsdup(TEXT("C:Program FilesWindowsAppsMicrosoft.ZuneMusic_10.18102.10531.0_x64__8wekyb3d8bbweMusic.UI.exe"));
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
HANDLE t1,t2;
OpenProcessToken(gethandle(_T("explorer.exe")), TOKEN_DUPLICATE | TOKEN_QUERY | TOKEN_ASSIGN_PRIMARY | TOKEN_ADJUST_PRIVILEGES , &t2);
DuplicateTokenEx(t2, 0, NULL, SecurityImpersonation,TokenPrimary, &t1);
CreateProcessAsUser(t1,NULL,szCmdline,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi)) 

有什么方法可以从我编写的程序启动 UWP 应用程序?还是我错过了任何明显的方法?

您可以使用 IApplicationActivationManager::ActivateApplication 方法执行此操作。

它需要从用户进程调用,因此您必须执行两步方法:从服务调用 CreateProcessAsUser 以创建一个帮助程序,然后调用 ActivateApplication。

相关内容

  • 没有找到相关文章

最新更新