使用CreateProcessAsUser来启动url
using CreateProcessAsUser to launch a url
最近我遇到一个问题,需要从提升的应用程序打开网页。我需要浏览器打开非提升,所以我环顾四周,找到了这个解决方案
这肯定会解决我的问题,除了CreateProcessAsUser
不接受URI作为文件名,执行将失败,错误消息为"文件名、目录名或卷标语法不正确"
有人能告诉我是否有办法通过CreateProcessAsUser启动网站,或者是否有类似的API来完成这项工作。。请注意,我的实际应用程序总是被提升的,因此我不能使用通常的Process.Start()
、CreateProcess()
或ShellExecute()
完成此任务需要使用两个不同的函数族:
- CCD_ 5及其相关功能。这些可用于启动新流程。必须提供可执行映像的文件名
- CCD_ 6和朋友们。这些将使用shell将文件类与可执行文件关联的规则将谓词应用于文件
为了打开URI,您需要使用ShellExecute
系列中的一个。为了从提升的进程中作为标准用户执行,您需要使用CreateProcess
系列中的一个。
一个功能不能同时满足两种要求。因此,您的解决方案是使用CreateProcessXXX
函数之一来创建一个以标准用户身份运行的进程。该进程将调用ShellExecuteXXX
。您将把URI作为命令行参数传递给CreateProcessXXX
。
因此,您需要创建一个不同的可执行文件作为您的标准用户启动器。或者重复使用现有的可执行文件,但根据您传递的参数使其切换到启动器模式。
我像cmd /c start myurl:
一样将CreateProcessAsUser()
与CommandLine一起使用,因此不需要创建另一个可执行文件来调用shell execute。
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 如何使用url确定网站协议
- 下载URL中的所有文件
- 使用 std::string () const 函数启动线程或未来
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- 如何创建线程序列以按照启动顺序执行任务?
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 在挂钩启动新线程时解除挂钩进程
- 程序无法启动,因为缺少 libmpc-3.dll
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- QSerialPort 在应用程序启动之前正在使用中
- 无法在 Arch Linux 中启动虚幻引擎 4
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 如何启动文件/目录/URL的关联应用程序
- 如何在同一选项卡中启动 URL
- 如何使用C++代码中的特定URL启动Microsoft Edge
- 使用CreateProcessAsUser来启动url