我制作了一个Windows native DLL(用C编写),当使用CreateFile函数打开卷时,它会尝试获取对卷的独占访问权限。这大多数时候都需要管理权限,因为我的 dll 也会在某个时间点尝试锁定卷并卸载卷。在将我的 dll 项目引用到解决方案后,我从 Visual studio 2010 以管理员身份启动我的可执行项目。到目前为止,它工作正常,我的进程能够获得该卷的独占访问权限。
现在,当我释放我的 dll 并将其与使用 QT 构建的 GUI 程序(也以管理员身份启动)一起使用时,它无法打开卷并给我带来共享冲突错误。我假设我的 dll 无法获得管理权限。我应该如何使用我的 dll 才能获得对该卷的独占访问权限?
如有任何帮助,我们将不胜感激。
最佳答案
您的问题出在其他地方。提升是由进程启动时执行的。如果托管 DLL 的进程已提升,则 DLL 中的代码将以提升的权限执行。
您报告的错误消息是共享违规,可能是ERROR_SHARING_VIOLATION
。这表明其他方已以阻止共享的方式打开该卷。如果您在没有海拔的情况下运行,则不会收到此错误。如果您尝试在没有足够权限的情况下打开卷,您将看到 ERROR_ACCESS_DENIED
或 ERROR_ELEVATION_NEEDED
。
关于c - 如何通过管理代码使用 Windows native dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20265658/