【问题标题】:How to use Windows native dll with Administrative code?如何使用带有管理代码的 Windows 本机 dll?
【发布时间】:2013-11-28 12:01:27
【问题描述】:

我制作了一个 Windows 本机 dll(用 C 编写),它在使用 CreateFile 函数打开一个卷时尝试获取对它的独占访问权。大多数时候这需要管理权限,因为我的 dll 也会在某个时间点尝试锁定卷和卸载卷。在将我的 dll 项目引用到解决方案后,我以 Visual Studio 2010 的管理员身份启动我的可执行项目。至此,它运行良好,我的进程能够获得该卷的独占访问权限。

现在,当我发布我的 dll 并将其与使用 QT 构建的 GUI 程序(也以管理员身份启动)一起使用时,它无法打开卷并给我共享冲突错误。我假设我的 dll 无法获得管理权限。我应该如何使用我的 dll 才能获得对卷的独占访问权限?

任何帮助将不胜感激。

【问题讨论】:

    标签: c windows qt winapi dll


    【解决方案1】:

    你的问题在别处。提升是由进程在启动时执行的。如果托管您的 DLL 的进程被提升,那么您的 DLL 中的代码将以提升的权限执行。

    您报告的错误消息是共享冲突,大概是ERROR_SHARING_VIOLATION。这表明其他方以阻止共享的方式打开了该卷。如果您在没有海拔的情况下运行,这不是您将收到的错误。如果您尝试打开没有足够权限的卷,您会看到ERROR_ACCESS_DENIEDERROR_ELEVATION_NEEDED

    【讨论】:

    • 好的,但是当我使用进程资源管理器检查已获取卷句柄的可能进程时,我看不到任何进程。
    • 从我现在的位置,我无法解释您的共享错误。我只是想回答你问的问题。您询问了如何获得 DLL 的管理员权限。我告诉你这个问题是不合逻辑的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2017-04-25
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多