想让你的某个文件不被删除不被移动不被重命名吗?很简单,see it!!!

2023-11-14

#include<windows.h>
#include<stdio.h>
BOOL OccupyFile( LPCTSTR lpFileName );//锁定文件
BOOL ReleaseFile(LPCTSTR lpFileName);//释放文件
         HANDLE hTargetHandle;
int main()
{

     OccupyFile("c:\\111.txt");
         printf("此时文件不能被删除、移动、重命名等\n");
        system("pause");
        ReleaseFile("c:\\111.txt");
    printf("此时文件可以被删除、移动、重命名等\n");
        return 0;
}



void RaiseToDebugP()
{
     HANDLE hToken;
     HANDLE hProcess = GetCurrentProcess();
     if ( OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
     {
         TOKEN_PRIVILEGES tkp;
         if ( LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid) )
         {
             tkp.PrivilegeCount = 1;
             tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
            
             BOOL bREt = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0) ;
         }
         CloseHandle(hToken);
     }    
}

BOOL OccupyFile( LPCTSTR lpFileName )
{
     BOOL     bRet;
    
     RaiseToDebugP();

     HANDLE hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 4);     // 4为system进程号

     if ( hProcess == NULL )
     {
         hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 8);         // 2K下是 8??
        
         if ( hProcess == NULL )
             return FALSE;
     }

     HANDLE hFile;


     hFile = CreateFile( lpFileName, GENERIC_READ, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);    


     if ( hFile == INVALID_HANDLE_VALUE )
     {
         CloseHandle( hProcess );
         return FALSE;
     }

     bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle, 
         0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE);

     CloseHandle( hProcess );

     return bRet;
}

BOOL ReleaseFile(LPCTSTR lpFileName)
{
         BOOL     bRet;
    
     RaiseToDebugP();

     HANDLE hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 4);   

     if ( hProcess == NULL )
     {
         hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 8);    
        
         if ( hProcess == NULL )
             return FALSE;
     }
         bRet=DuplicateHandle(hProcess,hTargetHandle,GetCurrentProcess(),NULL,0,FALSE,DUPLICATE_CLOSE_SOURCE);
         CloseHandle(hProcess);


     return bRet;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

想让你的某个文件不被删除不被移动不被重命名吗?很简单,see it!!! 的相关文章

  • 如何在Ireport中给出多选参数空值的条件?

    我正在使用以下方法编写报告iReport http en wikipedia org wiki JasperReports Third party tools我想在其中添加空值条件 它使用单选选项 city P p city or P p
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 如何测试 UITextField 是否为零?

    我正在尝试制作我的应用程序的一部分 如果该人不更改我的 UITextField 中的空白文本 那么他 她将无法继续下一步 基本上 我想测试 UITextField 的 nil 文本 我已经使用了 if text 方法 但是如果用户单击 UI
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 将 null 转换为对象?

    我今天遇到了这段代码 AsyncInvoke OnTimeMessageTimer object null ElapsedEventArgs null 有没有什么问题 有时 当方法重载时 您需要这样做 以告诉编译器您正在调用哪一个 null
  • 结构体如何存储在内存中?

    我有一个struct iof header在我的代码中 我确定它的宽度是 24 字节 我执行 sizeof iof header 它返回 32 字节宽 问题1为什么是 32 字节宽而不是 24 字节宽 问题2包括其成员在内 结构体如何存储在
  • 使用 rpy2 将 NULL 从 Python 转换为 R

    在 R 中经常NULL值用作默认值 使用 Python 和 RPy2 如何显式提供NULL争论 None不可兑换 NotImplementedError 字符串 NULL 只会被转换为字符串 并在执行过程中导致错误 采取以下示例 使用tsi
  • 将 Null 与 MySQL 触发器中的另一个值进行比较

    所以这是我的问题 我在更新表行时比较新值和旧值 但新值或旧值有时会为空 所以下面的代码不起作用 我可以解决这个问题吗 谢谢 BEFORE UPDATE ON mytable FOR EACH ROW BEGIN IF OLD assigne
  • 如何在我的应用程序中取消授权/撤销 LinkedIn 令牌

    我有一个 grails 应用程序 我希望用户授予我访问他 她的 LinkedIn 帐户的权限 以获取信息并以不同的方式显示信息 我能够执行以下操作 获取授权码 使用该授权码获取访问令牌 我将该访问令牌与到期日期一起存储在我的用户实体中 当过
  • 如何从 f# 返回一个空元组到 c#? [复制]

    这个问题在这里已经有答案了 我有这个类型正确的 C 函数 static System Tuple
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • FB SDK 3.0 我是否需要扩展访问令牌还是自动的?

    基于http developers facebook com roadmap offline access removal http developers facebook com roadmap offline access remova
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • LINQ 表达式中的 String.IsNullOrWhiteSpace

    我有以下代码 return this ObjectContext BranchCostDetails Where b gt b TarrifId tariffId b Diameter diameter b TarrifId tariffI
  • 使用以太坊 RPC 获取代币余额?

    如何通过以太坊RPC显示代币余额 id 0 data array data jsonrpc 2 0 data id id data method eth call data params from gt 0x0 to gt 0x0 data
  • C:运行系统命令并获取输出? [复制]

    这个问题在这里已经有答案了 我想在 Linux 中运行一个命令并获取其输出内容的返回文本 但我do not想要将此文本打印到屏幕上 有没有比制作临时文件更优雅的方法 你想要 popen http linux die net man 3 po
  • 如何在 psycopg 中使用 SELECT 查询找到空值?

    我在 python 中使用 psycopg2 库INSERT当我用 None 插入 null 值时 查询效果很好 但是当我想做的时候SELECTnull 值 None 不返回任何值 cur execute SELECT id FROM re
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • 如何使用放心获取 Rest API 中的授权令牌?是否可以?

    目前使用 Postman 我必须向 API URL login 发送请求 并传递用户名和密码 作为回报 我得到令牌 如下所示 请求示例 login POST Body username admin password admin Return

随机推荐

  • bash: ifconfig: 未找到命令 解决方案

    解决思路 1 ifconfig 命令存在的情况 首先查看 ifconfig 命令在哪个目录下 顺便检查是否安装了这个命令 whereis ifconfig 然后查看 echo PATH PATH 中是否包含了这个目录 一般情况下是不包含的
  • 前端开发都需要掌握那些技术?

    前端技术多且杂 那么作为前端开发者 我们可以从那些方面进行进阶提升呢 本文从以下几个方面进行了整理归纳 内容如下 一 网页开发 二 小程序 三 移动端 四 桌面端 五 其他技术 一 网页开发 这里指PC端网页开发 要求的技术主要有以下几类
  • 华为OD机试(JAVA)真题 -- 最长(连续)子串

    import java util Scanner 给定一个字符串 只包含字母和数字 按要求找出字符串中的最长 连续 子串 字符串本身是其最长的子串 子串要求 只包含 1 个字母 a z A Z 其余必须是数字 字母可以在子串中的任意位置 如
  • shell自动部署docker及docker-compose

    一 准备环境 centos7 6及centos7 9已通过测试 测试时服务器刚刚完成初始化 未修改任何配置 可以直接运行脚本进行安装 要求主机可以访问互联网 yum环境在脚本中已自动准备 将两个脚本直接复制放到root目录下 赋予可执行权限
  • NGUI学习笔记汇总

    NGUI学习笔记汇总 适用于NGUI2 x NGUI3 x 一 NGUI的直接用法 1 Attach a Collider 表示为NGUI的某些物体添加碰撞器 如果界面是用NGUI做的 只能这样添加 注 用Component添加无效 2 A
  • 前端WEB安全

    一 浏览器安全 首先了解前端web安全知识 比不可绕开的基础就是同源策略了 同源策略 Same Origin Policy 是一种约定 它是浏览器最核心也最基本的安全功能 如果缺少了同源策略 则浏览器的正常功能可能都会受到影响 可以说Web
  • 你想改变现在的生活吗?

    你想改变现在的生活吗 你想加薪吗 想买车吗 想找到你生命中的另一半吗 去学习吧 学校是个神奇的地方
  • 记一次解决联想笔记本冬天卡顿反应慢的方法

    个人简介 个人主页 九黎aj 幸福源自奋斗 平凡造就不凡 如果文章对你有用 麻烦关注点赞收藏走一波 感谢支持 欢迎订阅我的专栏 autojs 图携带方便买了一个联想笔记本 然后发现笔记本充电时候正常 不卡 不充电时候会卡0 4Ghz ctr
  • Java包装类、自动装箱与拆箱知识总结

    因为在学习集合时知道集合里存放的对象都是Object类型 取出的时候需要强制类型转换为目标类型 使用泛型集合不需要 如int a Integer arrayList get 0 然后我们就会发现 为什么要强制转换为Integer 而不是in
  • C++中const,指针和引用

    C 中的const 指针和引用 在线C C 编译器 可以试着运行代码 C 中的const 在C语言中 const修饰的量称为常变量 在编译过程中 const就是当成变量的编译生成指令的 不可以直接修改它的值 但是可以通过地址进行修改其对应的
  • springmvc 获取项目中的所有请求路径

    springboot springmvc 获取项目中的所有请求路径 1 编写业务代码 Autowired private WebApplicationContext applicationContext GetMapping getAllU
  • 关于vue2中$set及$delete的使用

    this set的使用 在平时使用vue进行开发的时候 我经常会遇到一个这样的问题 就是当data中包含声明且已赋值的对象或者数组 数组包对象 时 我们要向当前的这个对象中添加一个新的属性并且更新 结果发现并不会更新视图 只在控制台打印
  • Java读取操作大数据excel

    工作需要 读取大数据量的excel 用Apache poi的普通模式读取 会抛内存溢出 查询文档得知有另外一种模式 用户模式 该模式不会一下子整个文件load进来放在内存里 而是一行一行的读取 这样就能避免内存溢出了 上码 package
  • 数据库的数据类型

    数据库技术 1 创建数据表的语法规则 CREATE TABLE lt 表名 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 表级完整
  • Yum安装MySQL8.0版本

    文章目录 Yum安装MySQL8 0版本 实验环境 一 配置yum源 1 先备份Centos Base repo 然后从阿里云下载centos7 repo 备份本地yum源 下载阿里云的yum源 2 安装之前的环境检查 查看是否已经安装My
  • 【构建ML驱动的应用程序】第 9 章 :选择部署选项

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • rs lidar速腾激光雷达使用方法之录包及离线播放

    目录 一 录包packet 1 修改雷达参数配置config 2 录包 二 播放包 1 修改雷达参数配置config 2 编译 运行驱动 3 播放包 一 录包packet 1 修改雷达参数配置config 可以直接录制点云消息 但这种方法会
  • Python文件操作和管理指南:打开、读取、写入和管理文件

    文章目录 文件 File 打开文件 使用 with as 语句打开文件 读取文件内容 读取大文件的方式 逐行读取和读取全部行 写文件操作 文件定位 seek tell 关闭文件 文件管理 获取目录结构 获取当前目录 切换当前所在目录 创建目
  • 安装Git后所需的配置

    文章目录 前言 一 Git的配置 二 idea连接github 1 在idea中进行git的配置 2 通过账号密码或私人令牌连接GitHub 前言 上周刚接触了git遇到一些问题 今天总结一下 一 Git的配置 1 第一次安装git需要配置
  • 想让你的某个文件不被删除不被移动不被重命名吗?很简单,see it!!!

    include