分享
 
 
 

如何移动当前正在使用的文件

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Windows 95 和 Windows NT 分别提供了一种独特的方法,来帮助应用程序删除、替换或重命名正在使用的文件和目录。尽管这两个平台实现这些方法的方式有所不同,但它们具有一个共同的整体策略,即由应用程序指定要处理的文件,然后系统在重新启动时对这些文件进行处理。本文阐述应用程序如何使用各个 Windows 平台提供的方法。

更多信息

在 Windows NT 中移动文件

在 Windows NT 上运行的基于 Win32 的应用程序应结合使用 MoveFileEx() 和 MOVEFILE_DELAY_UNTIL_REBOOT 标志来移动、替换或删除当前正在使用的文件和目录。在系统下次重新启动时,Windows NT 启动程序就会移动、替换或删除指定的文件和目录。

要移动或替换正在使用的文件或目录,应用程序必须同时指定位于同一卷(例如,驱动器 C:)上的源路径和目标路径。如果目标路径是现有文件,它将被覆盖。如果目标路径是现有目录,它不会被覆盖并且源路径和目标路径都将保持不变。下面是一个移动或替换文件或移动目录的调用示例: // Move szSrcFile to szDstFile next time system is rebooted

MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);

要删除文件或目录,应用程序必须将目标路径设置为 NULL。如果源路径是一个目录,则只有在它为空时才能将它删除。请注意,如果您必须使用 MoveFileEx() 将文件从某个目录中删除,则必须重新启动计算机,然后才能调用 MoveFileEx() 来删除该目录。下面是一个如何删除文件或清空目录的示例: // Delete szSrcFile next time system is rebooted

MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);

在 Windows 95 中移动文件

Windows 95 没有实现 MoveFileEx(),但是它为所有基于 Win32、基于 16 位 Windows 和基于 MS-DOS 的应用程序提供了另一种移动、替换或删除当前正在使用的文件(但不是目录)的方法。此功能是通过名为 Wininit.ini 的文件的 [rename] 节实现的。如果 Windows 目录中存在 Wininit.ini 文件,Wininit.exe 会在系统启动时处理该文件。处理完 Wininit.ini 后,Wininit.exe 会将其重命名为 Wininit.bak。

[rename] 节的语法如下: DestinationFileName=SourceFileName

DestinationFileName 和 SourceFileName 必须位于同一卷上并且必须是短 (8.3) 文件名,因为 Wininit.ini 在保护模式的磁盘系统加载之前被处理,而长文件名只有在保护模式的磁盘系统正在运行时才可用。在 Wininit.ini 中使用长文件名指定的目标和源文件会被忽略。

[rename] 节可以包含多行,每行一个文件。要删除文件,请将 DestinationFileName 指定为 NUL。下面是一些项的示例: [rename]

NUL=C:\TEMP.TXT

C:\NEW_DIR\EXISTING.TXT=C:\EXISTING.TXT

C:\NEW_DIR\NEWNAME.TXT=C:\OLDNAME.TXT

C:\EXISTING.TXT=C:\TEMP\NEWFILE.TXT

第一行删除 Temp.txt。第二行将 Existing.txt 移动到一个新目录。第三行移动并重命名 Oldname.txt。第四行用 Newfile.txt 覆盖现有文件。

应用程序不能使用 WritePrivateProfileString() 将项写入 [rename] 节,因为可能有多个具有相同 DestinationFileName 的行,当 DestinationFileName 为“NUL”时尤其如此。相反,应通过分析 Wininit.ini 并将各个项追加到 [rename] 节的末尾来添加项。

注意:请始终使用不区分大小写的搜索来分析 Wininit.ini,因为 [rename] 节的标题和其中的文件名可能包含大小写字母的任意组合。

使用 Wininit.ini 的应用程序应检查 Windows 目录中是否存在该文件。如果存在 Wininit.ini,则自系统上次重新启动以来,其他应用程序已向该文件写入了数据。因此,该应用程序应打开该文件并向 [rename] 节中添加项。如果不存在 Wininit.ini,则该应用程序应创建该文件并向 [rename] 节中添加项。这样做可确保您的应用程序不会无意中删除其他应用程序写入的项。

要在系统重新启动之前撤消文件重命名操作,必须从 Wininit.ini 文件的 [rename] 节中删除相应的行。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有