c - 如何通过管理代码使用 Windows native dll?

标签 c windows qt winapi dll

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

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

如有任何帮助,我们将不胜感激。

最佳答案

您的问题出在其他地方。提升是由进程启动时执行的。如果托管 DLL 的进程已提升,则 DLL 中的代码将以提升的权限执行。

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

关于c - 如何通过管理代码使用 Windows native dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20265658/

相关文章:

c - 为什么我们将一些结构变量留在大括号之外?

c - 复数算术无法正常工作

c - void** 指针和 void*[] 作为函数参数

python - 如何将双斜杠路径转换为 ​​open() 接受的路径?

c++ - QProcess -> 在 Linux 上从 sftp 读取标准输出

c++ - Qt 包含另一个项目的类(无法打开包含文件 : 'foo.h' )

python - Matplotlib 图例中的自定义艺术家

c - 为什么我不能使用 C 中的 sscanf() 将值读入具有简单格式字符串的简单变量中?

windows - 使用批处理脚本查找和删除驱动器上每个文件夹中的 desktop.ini 文件

windows - 不使用 Setup.exe 手动安装 Cygwin