c++ 读取访问权限冲突_u盘文件禁止拷出,u盘只能读取不能复制的设置方法

一般对于U盘的重要文件都是禁止复制拷贝走的,那么如果想要直接读取,但是不允许复制有没有办法设置呢?当然是有的,下面小编来跟大家分享下操作方法。

1、在电脑桌面使用快捷键win键+r,输入gpedit.msc,点击回车键打开本地组策略编辑器。

c1421e8942f9576d37fe031445251748.png

2、在本地组策略编辑器窗口左侧选项中依次点击展开计算机配置—管理模版—系统—可移动存储访问。

fa44cde24752fcc831ac3ccd66066889.png

3、在右侧找到并双击可移动磁盘:拒绝执行权限。

ac643f18a08809d2844dc9a6c0091fac.png

4、在弹出的窗口中勾选已启用,然后点击确定。

7a1560fba4db8da4ebf81081f7188a9f.png

5、再次找到并双击可移动磁盘:拒绝写入权限。

d372b83204836f9528063e84489bc0fc.png

6、选中已启用,然后点击确定即可。

91c7551f2ffb0739a828fcb80dc870ac.png

7、上述方法设置的权限只能针对本电脑,如果换个电脑,设置的权限就无法生效了,那么有没有办法对U盘本身进行设置呢,其实也是有的,现在市场上有很多硬加密的U盘,下面小编以大势至大势至防泄密U盘为例进行介绍。

8、把该U盘插入电脑USB接口,然后双击打开此电脑,找到一个CD盘的安装程序,双击即可自动安装,待安装完成后返回电脑桌面找到其快捷方式双击打开,根据提示输入初始密码和以后用来验证的密保问题,最后点击确定即可。

7627174cfed23ea850b9d8575141c0e0.png

9、根据提示输入之前设置的管理密码,点击确定登陆。

32ed7ec406657044d981c7d72db948a5.png

10、在主界面的左上角找到并点击防拷选项。

6031888f6ea64d0e4c61af07b62267f5.png

11、在访客选项窗口中勾选允许访客打印文件、允许访客编辑文本、启用截屏限制,然后点击确定即可。

7be5403fadc135b106700849f170f2c5.png

12、返回主界面,在左上方找到并点击选项,在弹出的窗口中点击模式切换,切换到普通访客,这时候尝试对文件进行操作看看,是不是只能只能读取编辑不能复制。

54c2928517d65ff88058d28424be7130.png
C++中,你可以使用Windows API函数来检测U盘的插入以及读取U盘中的文件。以下是一个简单的示例步骤来实现这个功能: 1. 监听盘符变化:使用`WM_DEVICECHANGE`消息来监听系统设备的变化。这通常涉及到创建一个窗口,并注册`WM_DEVICECHANGE`消息处理函数。 2. 获取设备信息:当检测到插入事件时,可以使用`SetupDiGetClassDevs`和`SetupDiEnumDeviceInterfaces`等函数来获取设备信息。 3. 读取U盘文件:一旦你知道了U盘的设备路径或盘符,就可以使用文件I/O操作来读取U盘上的文件。 示例代码大致框架如下: ```cpp #include <windows.h> #include <iostream> // 窗口过程函数声明 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 全局变量,保存窗口句柄 HWND g_hWnd = NULL; // 消息处理函数 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DEVICECHANGE: if (wParam == DBT_DEVICEARRIVAL) { // 设备插入 PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; if (lpdb->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { // 这里可以添加获取设备信息和读取文件的代码 } } else if (wParam == DBT_DEVICEREMOVECOMPLETE) { // 设备移除 } return 0; // 其他消息处理... } return DefWindowProc(hwnd, uMsg, wParam, lParam); } int main() { // 注册窗口类 WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = GetModuleHandle(NULL); wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.lpszClassName = "MyWindowClass"; wc.hIconSm = NULL; if (!RegisterClassEx(&wc)) { std::cerr << "Window Registration Failed!" << std::endl; return -1; } // 创建窗口 g_hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "MyWindowClass", "Device Change Listener", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, GetModuleHandle(NULL), NULL); if (g_hWnd == NULL) { std::cerr << "Window Creation Failed!" << std::endl; return -1; } // 消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } ``` 这段代码仅提供了一个监听设备变化的基本框架。为了完整实现U盘插入检测和读取文件,你需要根据具体需求编写更多的代码来获取设备详细信息,并使用文件操作API(例如`CreateFile`,`ReadFile`等)来读取U盘上的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值