【问题标题】:Get handle of device with non-admin user获取非管理员用户的设备句柄
【发布时间】:2011-12-28 13:25:39
【问题描述】:

在我的 C++ DLL 中,我使用 CreateFile C++ 函数来获取设备句柄。我必须将它与GENERIC_WRITE 参数一起使用。 在 Vista 和更高版本上,为了使其工作,我需要管理员权限,但我也想与其他用户一起运行此 DLL。

注意:管理员希望其他用户执行我在 DLL 中执行的任务。

是否有人知道要使用的其他 API 或解决方法?

【问题讨论】:

  • 我认为您必须运行具有管理员权限的服务才能完成工作,并且您的用户必须要求该服务进行任何更改。不过,你能告诉我们你在做什么吗?您尝试修改的资源可能出于某种原因被标记为仅限管理员。
  • 这可能是一种解决方法。但是如何将我的 dll 更改为服务?有一个使用此 dll 的 GUI,我如何使用服务从 GUI 应用程序调用函数?

标签: c++ winapi device administrator


【解决方案1】:

如果您将 dll 的功能作为 COM 对象提供,您可以使用COM Elevation Moniker

COM 提升名字对象允许在用户帐户控制 (UAC) 下运行的应用程序以提升的权限激活 COM 类。有关更多信息,请参阅关注最小权限。

[...]

提升名字对象用于激活 COM 类以完成需要提升权限的特定且有限的功能,例如更改系统日期和时间。

提升需要 COM 类及其客户端的参与。必须将 COM 类配置为通过注释其注册表项来支持提升,如“要求”部分所述。 COM 客户端必须使用提升名字对象请求提升。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多