1

我正在寻找一种方法来安全地从我的 Qt 5.2 应用程序中删除我的 USB 密钥,但我找不到任何 Qt 模块来做到这一点。

他们是一种方法还是我必须对其进行硬编码?

4

2 回答 2

2

我从未使用 Qt 删除 USB,但这个简单的 c 代码也可以工作。

#include <sys/mount.h>

int umount(const char *target);
于 2014-05-19T21:18:45.490 回答
1

如果你的意思是通过移除来卸载你的 USB 设备,那么没有跨平台的解决方案。也许可以在 QtSystems 模块中添加一些东西,但问题是这需要管理员权限或一些技巧,例如 Linux 上的 setuid 或 caps 等等。

您现在可以按照以下方式做一些事情来实现此功能:

void MyClass::unmount() {
#ifdef Q_OS_LINUX
    // See details: http://linux.die.net/man/2/umount
    if (umount(myUsbKeyPath) < 0)
        qDebug() << "Failed to umount";
#elif Q_OS_WIN
    // See details: http://support.microsoft.com/default.aspx?scid=kb;en-us;165721
    DWORD dwBytesReturned;
    DeviceIoControl(hVolume,
                    IOCTL_STORAGE_EJECT_MEDIA,
                    NULL, 0,
                    NULL, 0,
                    &dwBytesReturned,
                    NULL);
#endif
}
于 2014-05-20T02:59:45.387 回答