在 .NET 中使用 MAPI 时如何处理用户访问控制
我使用 MAPI 从我的应用程序创建带有附件的电子邮件,它在 XP 和 Vista 上运行得很好(没有 UAC)。 当然,如果您启用了 UAC,它就不起作用(尽管它不会给出任何错误,并且不会提示用户允许继续)。
我读了很多书,发现了很多不同的想法:
- 需要应用程序的管理员权限
- 需要某种形式的提升 应用程序的权限 为
- 小型应用程序创建一个 COM 对象 需要的部分代码 使
- 操作系统提示用户 询问他们是否愿意 继续。
我想知道 SO 用户会做什么,因为我实际上只需要提升一两个功能。 我在这里寻找最小的痛苦(我不做 COM,但我可以使用其中最好的 P/Invoke...),并且我正在 .NET 2.0 中工作(这是一个遗留应用程序) 。
编辑: 我同意提升整个应用程序并不是一个好主意,因为只有其中一部分需要提升,但我的想法是,从长远来看,这可能比尝试仅提升其中一部分更容易。
另外,我宁愿远离 .NET SMTP 解决方案,因为我的目标只是创建一条消息和一个附件,但将其显示给用户,以便他们可以添加更多文本并在闲暇时发送。 。
I've used MAPI to create emails with attachments from my application and it works very well on XP and Vista (without UAC). Of course, if you have UAC enabled, it just doesn't work (though it gives no errors, and doesn't prompt the user for permission to continue).
I've done a bunch of reading and have found a lot of differing ideas:
- Require Admin privileges for the app
- Require some form of elevated
privileges for the app - Create a COM object for the small
portions of code that require
elevation - Get the OS to prompt the users
asking them if they want to
continue.
I'm wondering what SO Users would do given that I really only need elevation for one or two functions. I'm looking for the minimal amount of pain here (I don't do COM, but I can P/Invoke with the best of them...), and I'm working in .NET 2.0 (it's a legacy app).
EDIT:
I agree that elevating the whole app isn't a great idea given that only part of it needs the eleveation, but my thought had been that might be easier in the long run than trying to elevate only part of it.
Also, I'd rather stay away from the .NET SMTP solution, since my goal is simply to create a message and with an attachment, but display it to the user so that they can add more text and send it at their leisure...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您可以放弃 MAPI 转而使用更通用的 SMTP,您可以使用.NET的System.Net.Mail.SmtpClient 类。
与 MailMessage 类,您可以添加附件并通过任何愿意的SMTP服务器发送消息。
所有这些都可以在旧的 .NET 2.0 中作为托管代码使用 - 不需要 p/invoke 或 COM。
参考页面中的示例。
If you can give up MAPI in favor of the more general SMTP, you can use .NET's System.Net.Mail.SmtpClient class.
Together with the MailMessage class, you can add attachments and send messages via any willing SMTP server.
All available in good old .NET 2.0 as managed code - no need for p/invoke or COM.
Examples in the referenced pages.