首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CreateProcessAsUser启动url

使用CreateProcessAsUser启动url
EN

Stack Overflow用户
提问于 2013-02-21 02:09:51
回答 1查看 455关注 0票数 4

最近我遇到了一个问题,我需要从一个提升的应用程序中打开一个网页。我需要在没有提升的情况下打开浏览器,所以我环顾四周,找到了this solution

这肯定会解决我的问题,除非CreateProcessAsUser不接受URI作为文件名,执行将失败,并显示错误消息“文件名、目录名或卷标语法不正确”。

有没有人能告诉我有没有办法通过CreateProcessAsUser启动一个网站,或者有没有类似的API来完成这项工作。请注意,我的实际应用程序总是提升的,因此我不能使用通常的Process.Start()CreateProcess()ShellExecute()

EN

回答 1

Stack Overflow用户

发布于 2013-02-21 05:41:43

要完成此任务,您需要使用两个不同的函数系列:

  1. CreateProcess和相关函数。这些可以用来启动一个新的进程。您必须提供可执行文件image.
  2. ShellExecute和朋友的文件名。它们将使用shell的规则将谓词应用于文件,以便将文件类关联到可执行文件。

为了打开URI,您需要使用ShellExecute家族中的一个。为了从提升的进程中以标准用户的身份执行,您需要使用CreateProcess系列中的一个。

您不能用一个函数同时满足您的两个需求。因此,您的解决方案是使用其中一个CreateProcessXXX函数来创建一个以标准用户身份运行的进程。该进程将依次调用ShellExecuteXXX。您将把URI作为命令行参数传递给CreateProcessXXX

因此,您需要创建一个不同的可执行文件作为您的标准用户启动器。或者重用现有的可执行文件,但根据传递给它的参数使其切换到启动器模式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14986938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档