ShellExecute 什么时候会失败? (德尔福)

发布于 2024-08-13 06:15:10 字数 122 浏览 2 评论 0原文

我计划使用 ShellExecute 作为用 delphi 2007 编写的应用程序的更新程序,我想知道 ShellExecute 是否可以在大多数装有 Win 的计算机上工作,或者是否会因为某些用户权限或类似的原因而很容易失败。

I am planning to use ShellExecute for the updater of an application written in delphi 2007, I was wondering if ShellExecute will work on most computers with Win or if it can easly fail because of some user permission or something like that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独难免 2024-08-20 06:15:10

我相信 shellExecute 确实需要管理员。你没有提到操作系统。如果是 Vista+ 那么 UAC 就可以发挥作用了。请参阅此说明

I believe shellExecute does require admin. You didn't mention the OS. If it is Vista+ then UAC comes in to play. see this explanation

清风夜微凉 2024-08-20 06:15:10

来自 MSDN

备注

因为ShellExecute可以委托
执行到 Shell 扩展(数据
来源、上下文菜单处理程序、动词
已激活的实现)
使用组件对象模型(COM),
COM 应先初始化
调用 ShellExecute。一些贝壳
扩展需要 COM
单线程单元(STA)类型。
在这种情况下,COM 应该是
初始化如下所示:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

正如 Ken Lange 已经建议的那样,根据您想要执行的内容,您可能需要管理权限。

From MSDN

Remarks

Because ShellExecute can delegate
execution to Shell extensions (data
sources, context menu handlers, verb
implementations) that are activated
using Component Object Model (COM),
COM should be initialized before
ShellExecute is called. Some Shell
extensions require the COM
single-threaded apartment (STA) type.
In that case, COM should be
initialized as shown here:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

And as Ken Lange alread suggested, deppending on what you want to execute, you may need administrative rights.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文