“无效的qq接受文件句柄无效”导致文件无法删除怎么办?

Linux下通过文件句柄恢复误删除的数据文件_Linux教程_Linux公社-Linux系统门户网站
你好,游客
Linux下通过文件句柄恢复误删除的数据文件
来源:Linux社区&
作者:ccchencheng
环境: Enterprise Server
数据库:11.2.0.1.0
归档模式:非归档
提示:如果不小心通过操作系统命令误删除了数据文件,一定不要轻易的关闭实例或者offline数据文件.
在user表空间中新增一个数据文件/data//oradata/orcl/user03.dbf
orcl@ SYS& selectfile#,status,name from v$
FILE# STATUSNAME
---------- ------------------------------------------------------------
1 SYSTEM/data/oracle/oradata/orcl/system01.dbf
2 ONLINE/data/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE/data/oracle/oradata/orcl/undotbs01.dbf
4 RECOVER/data/oracle/oradata/orcl/users01.dbf
5 ONLINE/data/oracle/oradata/orcl/test.dbf
6 ONLINE/data/oracle/oradata/orcl/user02.dbf
7 ONLINE/data/oracle/oradata/orcl/t1.dbf
7 rows selected.
Elapsed: 00:00:00.01
orcl@ SYS& altertablespace users add datafile'/data/oracle/oradata/orcl/user03.dbf' size 10M;
Tablespace altered.
Elapsed: 00:00:08.78
orcl@ SYS&
orcl@ SYS& select file#,status,name from v$
FILE# STATUSNAME
---------- ------------------------------------------------------------
1 SYSTEM& /data/oracle/oradata/orcl/system01.dbf
2 ONLINE& /data/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE& /data/oracle/oradata/orcl/undotbs01.dbf
4 RECOVER& /data/oracle/oradata/orcl/users01.dbf
5 ONLINE& /data/oracle/oradata/orcl/test.dbf
6 ONLINE& /data/oracle/oradata/orcl/user02.dbf
7 ONLINE& /data/oracle/oradata/orcl/t1.dbf
8 ONLINE& /data/oracle/oradata/orcl/user03.dbf
8 rows selected.
orcl@ SYS&
------------------------在操作系统用root用户删除新增数据文件user03.dbf--------
[root@linux128 dbs]#cd /data/oracle/oradata/orcl
[root@linux128orcl]# ll
总计 1599388
-rw-r----- 1 oracleoinstall-11 10:54control01.ctl
-rw-r----- 1 oracleoinstall-30 14:30control01.ctl.bk
-rw-r----- 1 oracleoinstall-11 10:54 redo01.log
-rw-r----- 1 oracleoinstall-11 10:09 redo02.log
-rw-r----- 1 oracleoinstall-11 10:09 redo03.log
-rw-r----- 1 oracleoinstall -11 10:53 sysaux01.dbf
-rw-r----- 1 oracleoinstall -11 10:50 system01.dbf
-rw-r----- 1 oracleoinstall-11 10:09 t1.dbf
-rw-r----- 1 oracleoinstall-30 13:20 temp01.dbf
-rw-r----- 1 oracleoinstall-30 14:00 temp02.dbf
-rw-r----- 1 oracleoinstall2-10-22 temp03.dbf
-rw-r----- 1 oracleoinstall-11 10:09 test.dbf
-rw-r----- 1 oracleoinstall-11 10:50undotbs01.dbf
-rw-r----- 1 oracleoinstall-11 10:09 user02.dbf
-rw-r----- 1 oracleoinstall-11 10:50 user03.dbf
-rw-r----- 1 oracleoinstall-11 10:18users01.dbf
[root@linux128orcl]# rm user03.dbf
rm:是否删除 一般文件&user03.dbf&? y
[root@linux128orcl]# ll
总计 1589124
-rw-r----- 1 oracleoinstall-11 10:54control01.ctl
-rw-r----- 1 oracleoinstall-30 14:30control01.ctl.bk
-rw-r----- 1 oracleoinstall-11 10:54 redo01.log
-rw-r----- 1 oracleoinstall-11 10:09 redo02.log
-rw-r----- 1 oracleoinstall-11 10:09 redo03.log
-rw-r----- 1 oracleoinstall -11 10:53 sysaux01.dbf
-rw-r----- 1 oracleoinstall -11 10:54 system01.dbf
-rw-r----- 1 oracleoinstall-11 10:09 t1.dbf
-rw-r----- 1 oracleoinstall-30 13:20 temp01.dbf
-rw-r----- 1 oracleoinstall-30 14:00 temp02.dbf
-rw-r----- 1 oracleoinstall2-10-22 temp03.dbf
-rw-r----- 1 oracleoinstall-11 10:09 test.dbf
-rw-r----- 1 oracleoinstall-11 10:54undotbs01.dbf
-rw-r----- 1 oracleoinstall-11 10:09 user02.dbf
-rw-r----- 1 oracleoinstall-11 10:18users01.dbf
[root@linux128orcl]#
-------我们通过过滤dbw进程,找出进程号,并查找到对应的文件句柄-------
此时务必不能做数据库级别的offline或者关闭实例,否则将无法定位删除文件。
[root@linux128 test]#ps -ef| grep dbw
oracle:58 ?00:00:01 ora_dbw0_orcl
root:50 pts/700:00:00 grep dbw
---------------------------
[root@linux128 fd]# cd /proc/3567/fd
[root@linux128 fd]#ll
lr-x------ 1 oracleoinstall 64 05-11 10:19 0 -& /dev/null
l-wx------ 1 oracleoinstall 64 05-11 10:19 1 -& /dev/null
l-wx------ 1 oracleoinstall 64 05-11 10:19 10 -&/data/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3546.trc
l-wx------ 1 oracleoinstall 64 05-11 10:19 11 -&/data/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3546.trm
lr-x------ 1 oracleoinstall 64 05-11 10:19 12 -&/data/oracle/product/11.2/db_1/rdbms/mesg/orazhs.msb
lr-x------ 1 oracleoinstall 64 05-11 10:19 13 -& /dev/zero
lr-x------ 1 oracleoinstall 64 05-11 10:19 14 -& /proc/3567/fd
lr-x------ 1 oracleoinstall 64 05-11 10:19 15 -& /dev/zero
lr-x------ 1 oracleoinstall 64 05-11 10:19 16 -&/data/oracle/product/11.2/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracleoinstall 64 05-11 10:19 17 -& /data/oracle/product/11.2/db_1/dbs/hc_orcl.dat
lrwx------ 1 oracleoinstall 64 05-11 10:19 18 -& /data/oracle/product/11.2/db_1/dbs/lkORCL
lrwx------ 1 oracleoinstall 64 05-11 10:19 19 -& /data/oracle/oradata/orcl/control01.ctl
l-wx------ 1 oracleoinstall 64 05-11 10:19 2 -& /dev/null
lrwx------ 1 oracleoinstall 64 05-11 10:19 20 -&/data/oracle/flash_recovery_area/orcl/control02.ctl
lrwx------ 1 oracleoinstall 64 05-11 10:19 21 -& socket:[80458]
lrwx------ 1 oracleoinstall 64 05-11 10:19 22 -& /data/oracle/oradata/orcl/system01.dbf
lrwx------ 1 oracleoinstall 64 05-11 10:19 23 -& /data/oracle/oradata/orcl/sysaux01.dbf
lrwx------ 1 oracleoinstall 64 05-11 10:19 24 -& /data/oracle/oradata/orcl/undotbs01.dbf
lrwx------ 1 oracleoinstall 64 05-11 10:19 25 -& /data/oracle/oradata/orcl/test.dbf
lrwx------ 1 oracleoinstall 64 05-11 10:19 26 -& /data/oracle/oradata/orcl/user02.dbf
lrwx------ 1 oracleoinstall 64 05-11 10:19 27 -& /data/oracle/oradata/orcl/t1.dbf
lr-x------ 1 oracleoinstall 64 05-11 10:19 28 -&/data/oracle/product/11.2/db_1/rdbms/mesg/orazhs.msb
lr-x------ 1 oracleoinstall 64 05-11 10:19 29 -&/data/oracle/product/11.2/db_1/rdbms/mesg/oraus.msb
l-wx------ 1 oracleoinstall 64 05-11 10:19 3 -&/data/oracle/product/11.2/db_1/rdbms/log/orcl_ora_3546.trc
lrwx------ 1 oracleoinstall 64 05-11 10:52 30 -& /data/oracle/oradata/orcl/user03.dbf (deleted)
lr-x------ 1 oracleoinstall 64 05-11 10:19 4 -& /dev/null
lr-x------ 1 oracleoinstall 64 05-11 10:19 5 -& /dev/null
lr-x------ 1 oracleoinstall 64 05-11 10:19 6 -& /dev/null
lrwx------ 1 oracleoinstall 64 05-11 10:19 7 -& /data/oracle/product/11.2/db_1/dbs/hc_orcl.dat
lrwx------ 1 oracleoinstall 64 05-11 10:19 8 -& /data/oracle/product/11.2/db_1/dbs/lkinstorcl(deleted)
lr-x------ 1 oracleoinstall 64 05-11 10:19 9 -& /proc/3567/fd
---------进入fd目录后,可以看到user03.dbf已经被标示为delete,我们将查找到的文件拷贝到新目录下,并改名----
[root@linux128 fd]# cp -p /proc/3567/fd/30 /data/user03.dbf
[root@linux128 test]# ll/data/user03.dbf
总计 215276
-rw-r--r-- 1rootroot-11 10:45 test2.file
-rw-r--r-- 1rootroot-11 10:43 test.file
-rw-r----- 1 oracleoinstall-11 10:50 user03.dbf
[root@linux128 test]#
---因为是用的操作系统命令删除文件,oracle此时并无异常,但是在offline后尝试online时是会提示文件无法锁定----
orcl@ SYS& alterdatabase datafile 8
Database altered.
Elapsed: 00:00:00.19
orcl@ SYS&
orcl@ SYS&
orcl@ SYS& selectfile#,status,name from v$
FILE# STATUSNAME
---------- ------------------------------------------------------------
1 SYSTEM/data/oracle/oradata/orcl/system01.dbf
2 ONLINE/data/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE/data/oracle/oradata/orcl/undotbs01.dbf
4 RECOVER/data/oracle/oradata/orcl/users01.dbf
5 ONLINE/data/oracle/oradata/orcl/test.dbf
6 ONLINE/data/oracle/oradata/orcl/user02.dbf
7 ONLINE/data/oracle/oradata/orcl/t1.dbf
8 RECOVER/data/oracle/oradata/orcl/user03.dbf
8 rows selected.
Elapsed: 00:00:00.03
orcl@ SYS&
orcl@ SYS&
orcl@ SYS& alterdatabase datafile 8
alter databasedatafile 8 online
ERROR at line 1:
ORA-01157: cannotidentify/lock data file 8 - see DBWR trace file
ORA-01110: data file8: '/data/oracle/oradata/orcl/user03.dbf'
Elapsed: 00:00:00.03
orcl@ SYS&
--------------我们对删除的user03.dbf重命名执行新路径----
orcl@ SYS& alterdatabase rename file '/data/oracle/oradata/orcl/user03.dbf' to'/data/user03.dbf';
Database altered.
Elapsed: 00:00:00.07
orcl@ SYS&
orcl@ SYS&
orcl@ SYS& alterdatabase datafile'/data/user03.dbf'
alter databasedatafile'/data/user03.dbf' online
ERROR at line 1:
ORA-01113: file 8needs media recovery
ORA-01110: data file8: '/data/user03.dbf'
Elapsed: 00:00:00.04
orcl@ SYS&
orcl@ SYS&
orcl@ SYS& recoverdatafile 8;
Media recoverycomplete.
orcl@ SYS&
orcl@ SYS&
orcl@ SYS& alterdatabase datafile'/data/user03.dbf'
Database altered.
Elapsed: 00:00:00.03
orcl@ SYS&
orcl@ SYS&
orcl@ SYS&selectfile#,status,name fromv$
FILE# STATUSNAME
---------- ------------------------------------------------------------
1 SYSTEM/data/oracle/oradata/orcl/system01.dbf
2 ONLINE/data/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE/data/oracle/oradata/orcl/undotbs01.dbf
4 RECOVER/data/oracle/oradata/orcl/users01.dbf
5 ONLINE/data/oracle/oradata/orcl/test.dbf
6 ONLINE/data/oracle/oradata/orcl/user02.dbf
7 ONLINE/data/oracle/oradata/orcl/t1.dbf
8 ONLINE/data/user03.dbf
8 rows selected.
Elapsed: 00:00:00.04
orcl@ SYS&
----------数据文件成功恢复------
需要注意的,如果数据库没有归档,那么操作一定要尽快,防止redo中关于user03.dbf的日志被冲掉。
更多RedHat相关信息见 专题页面
相关资讯 & & &
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款使用eclipse时导入时不小心导致创建出现了恐怖的递归,创建了一个超级长的文件夹。尝试着删除,,或者命令行下del都用了,还是搞不定。网上查了后,终于解决了。一般情况下面几种方法都能删除用户无法删除的文件,但是针对上面问题,只有第5种方法成功。1、unlocker。下载地址:http://www.onlinedown.net/soft/24732.htm2、rmdir /s xxx3、robocopy。下载地址.cn/detail/10/91484.shtml解压再把robocopy.exe放到系统文件夹systerm32里。试着在那个存在超长文件夹所在目录创建了一个空目录t1,然后在cmd命令行中输入Robocopy /MIR t1 longlongpath说明:longlongpath 是超长文件夹的文件夹目录4、360文件粉碎机。5、最后用金山毒霸中的金山文件粉碎器,成功删除。查看: 408|回复: 0
从一个已经打开的文件句柄中取得文件名
&&采用CopyFileEx这个API进行文件复制时,为了能够动态的显示文件的复制进度百分比,用户可以自定义回调函数,采用进度条和标签来显示复制进度。这2个回调函数的格式如下:
Declare Function CopyFileEx Lib &kernel32.dll& Alias &CopyFileExA& (ByVal lpExistingFileName As String, _
& && && && && && && && & ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, _
& && && && && && && && & lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
其中,现有文件名lpExistingFileName,新建的文件名lpNewFileName。而lpProgressRoutine则是系统的回调函数指针。其定义如下:
Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, _
& && && && &ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, _
& && && && &ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long
可以看出这个回调函数的格式很复杂,好处是其中的大部分参数都是由Windows提供给用户使用的,如TotalFileSize 为文件的大小, TotalBytesTransferred 为已经传送的大小,这样用户就可以计算出实际进度,从而用控件在用户界面中反映出来。
但是可以看出,这里面没有给出文件名称,而是给了源文件和目标文件的文件句柄指针,不便在用户控件中给出“正在复制xxx文件,进度 25%”类似的信息,因此就涉及到了怎样从文件句柄反查实际文件路径的问题。
从网上的开发者的反馈来看,微软并没有直接提供能够从文件句柄获得文件名称的开发接口,只是在核心态的操作中,有一个NTQueryObject的函数,可以取得NT物理路径名,即\DEVICE\HARDDISK0\Test\myfile.dat这样的名称。而如何将NT物理设备路径与DOS路径名对应起来,只有再次采用QueryDosDevice这样的函数,将系统中所有的可能驱动器的NT物理设备路径列举出来进行比对,将能够匹配的设备进行匹配替换,从而获得Dos路径。
因为NTQueryObject函数属于系统核心操作函数,需要有管理员权限才能运行,因此这样的做法并不很好用。但是目前未看到更好的做法,暂时这样处理。
下面是具体的实现过程:
' 主要操作过程, hFile是要查找的文件句柄
Private Function GetFileNameFromHandle(ByVal hFile As Long) As String
& & Dim hFileMapping As Long, pMemMap As Long
& & '这个操作过程有点烦杂。因为NTQueryObject属于核心函数,而FileObject是NT系统的核心构建,对其直接访问会导致系统不稳定,死机的机会很大。因此只有建立要访问的对象的映像后,对映像进行访问,确保安全性。
' hFileMapping,pMemeMap都是内存映像句柄
& & Dim sFilename As String
& & Dim sa As SECURITY_Attributes '这是文件访问的安全属性结构,后面介绍
& & '对安全访问作初始设置,一般可以使用 ByVal 0&的方式提供Null指针,但是这里VB编译器一直报告错误,只好设置一个初始值后,直接提供给函数使用。
& & sa.bInheritHandle = 1
& & sa.lpSecurityDescriptor = 0
& & sa.nLength = Len(sa)
& & Const PAGE_READONLY = 2
& & Const MAX_PATH = 260
& & '创建映像文件
& & hFileMapping = CreateFileMapping(hFile, sa, PAGE_READONLY, 0&, 0&, vbNullString)
& & '创建内存映像
& & pMemMap = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0&, 0&, 0&)
& & sFilename = String$(MAX_PATH, 0)
& & Call GetMappedFileName(GetCurrentProcess(), ByVal pMemMap, sFilename, MAX_PATH)
& & '获取Mapped文件名
& &'后面消除映像文件
& & Call UnmapViewOfFile(ByVal pMemMap)
& & Call CloseHandle(hFileMapping)
& & '将ASCIIZ转化为BSTR,VB String。如果是Unicode 字串,有必要调用 StrConv转换。
& & sFilename = TrimNull(sFilename)&&'此处得到的是 \DEVICE\Harddisk0\Test\Testdat.dat
& & GetFileNameFromHandle = FindDosName(sFilename) '比对Dos路径并替换
End Function
'将 NT 路径替换为DOS设备路径,逻辑盘符
' 此处是开始创建了一个从 A-Z的NT路径表 NTDriverNames(0 to 25),全局变量
' 并使用 InitDosName 对其进行初始化。
Function FindDosName(lpNTDevice As String) As String
& & Dim i As Integer
& & Dim lpName As String
& & 'Dim sC As String
& & Dim sBuffer As String * 520
& & Dim ret As Long
& & For i = 0 To 25
& && &&&lpName = NTDriverNames(i)
& && &&&If Len(lpName) & 0 Then
& && && &&&sBuffer = Mid(lpNTDevice, Len(lpName) + 1)
& && && && &If Left(lpNTDevice, Len(lpName)) = lpName And Left(sBuffer, 1) = &\& Then
& && && && && & FindDosName = Chr(&H41 + i) & sBuffer
& && && && && & Exit For
& && && && &End If
& && &&&End If
& & 'If sC & &Z& Then FindDosName = vbNullString
End Function
'从 0 -25 一次对应每个设备的NTDriverName: \DEVICE\HARDDISKVOLUME7--&DOSName E:\
Sub InitDosName()
& & Dim i As Integer
& & Dim sC As String
& & Dim sBuffer As String * 520
& & Dim ret As Long
& & For i = 0 To 25
& && &&&sBuffer = String$(520, 0)
& && &&&sC = Chr(&H41 + i) & &:&& &'形成DOS设备名, 如C:
& && &&&ret = QueryDosDeviceA(sC, sBuffer, 520) '查询设备名
& && &&&'If ret = 0 Then
& && &&&'& &MsgBox GetLastError
& && &&&'End If
& && &&&ret = InStr(sBuffer, Chr$(0))
& && &&&NTDriverNames(i) = Trim(IIf(ret & 0, Left(sBuffer, ret - 1), sBuffer))
'完成 ASCIIZ 到 DOS String的转换
Private Function TrimNull(item As String) As String
& &Dim pos As Integer
& &pos = InStr(item, Chr$(0))
& &If pos Then
& && &TrimNull = Left$(item, pos - 1)
& && &TrimNull = item
End Function
' 前面的操作中所涉及到的 API 及 Types。
Type SECURITY_Attributes
& & nLength As Long
& & lpSecurityDescriptor As Long
& & bInheritHandle As Long
Const PAGE_READWRITE = 1
'以可读?可写方式打开映射
Const ERROR_ALREADY_EXISTS = 183
Private Const FILE_ATTRIBUTE_NORMAL As Long = &H80
Private Const SECTION_MAP_READ As Long = &H4
Private Const FILE_MAP_READ As Long = SECTION_MAP_READ
Private Const FILE_SHARE_READ As Long = &H1
Private Const GENERIC_READ As Long = &H
Private Const OPEN_EXISTING As Long = 3
Private Const PAGE_EXECUTE_READWRITE As Long = &H40
Private Const PAGE_READONLY As Long = &H2
Private Const SEC_IMAGE As Long = &H1000000
Private Const INVALID_HANDLE_VALUE As Long = -1
Private Declare Function CreateFileMapping Lib &kernel32 & Alias &CreateFileMappingA& (ByVal hFile As Long, lpFileMappingAttributes As SECURITY_Attributes, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
'创建一个文件映射对象
Private Declare Function CloseHandle Lib &kernel32& (ByVal hObject As Long) As Long
Private Declare Function GetMappedFileName Lib &psapi& Alias &GetMappedFileNameA& (ByVal hProcess As Long, lpv As Any, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function QueryDosDevice Lib &kernel32& Alias &QueryDosDeviceA& (ByVal lpDeviceName As String, ByVal lpTargetPath As String, ByVal ucchMax As Long) As Long
Private Declare Function MapViewOfFile Lib &kernel32.dll& (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long
Private Declare Sub CopyMemory Lib &kernel32.dll& Alias &RtlMoveMemory& (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function UnmapViewOfFile Lib &kernel32.dll& (ByRef lpBaseAddress As Any) As Long
Powered by查看: 1303|回复: 4
公民, 积分 104, 距离下一级还需 196 积分
精华0帖子威望0 点积分104 点注册时间最后登录
下载了xex版的勿忘我,解压后,从PC通过局域网复制到xbox(已刷自制,装有FSD),复自到部分文件时,提示无效的文件句柄(如图),请教大神如何解决?!
附件: 你需要才可以下载或查看附件。没有帐号?
骑士, 积分 1858, 距离下一级还需 1142 积分
精华0帖子威望0 点积分1858 点注册时间最后登录
txt???是否那里搞错了???
公民, 积分 104, 距离下一级还需 196 积分
精华0帖子威望0 点积分104 点注册时间最后登录
小弟PC用的win7系统
战士, 积分 808, 距离下一级还需 692 积分
精华0帖子威望0 点积分809 点注册时间最后登录
实际上xex版不宜直接放入硬盘的,lz你现在应该用crear iso把xex转回iso,再用iso2god把iso转为god
平民, 积分 18, 距离下一级还需 82 积分
精华0帖子威望0 点积分18 点注册时间最后登录
删除那些movie文件下这些txt文件,只保留汉化txt文件,汉化文件跟这些不重名,我的就是删除这些无用的文件后可以直接考进去了
Powered by
扫描二维码
下载 A9VG 客户端(iOS, Android)提示 文件为无效句柄,无法删除怎么办?_百度知道
提示 文件为无效句柄,无法删除怎么办?
统WINDOWS- system -drivers 下有个 nwupspx,进了安全模式提示 文件为无效句柄,无法删除怎么办.sys文件
提问者采纳
文件实际上并未删除,我们可以使用资源工具包的Oh:文件使用了存取控制列表 如果某个文件使用了存取控制列表(Access Control /news/w31/file,删除时就会提示文件正在使用?]。 原因四,管理员具有取得任何文件所有权的隐含能力:[&#47,Total这几个软件://,也许无法恢复。为了向后兼容.dll”并回车。反之,这些默认的权限是可以被修改的://,安装好的Support Tools却不带Oh。 原因一。 要解决此类问题。 三:文件正在使用中 在删除文件时,可以使用如下命令:" target="_blank">http,然后在任务管理器中结束Explorer进程,如果文件的名称仅是“ ”(一个空格字符),如Win98下进行删除,如果在同一个文件夹中有两个分别名为“File.dll”命令重新注册即可,当使用标准Win32调用打开第二个文件时,Nero,使得删除文件的过程更加复杂.exe,它会启用系统全局标志“维护对象列表”;SOFTWARE&#92;local on”.exe相似,扫描前确定已选上修复文件和坏扇区。打开系统监视的命令是“Openfiles &#47?”查阅,无法删除,可能还会遇到上述各种原因的不同组合;的文件夹。根据损坏的性质;,然后关闭此进程;InProcServer32].com/news/w31/file。在以前的Windows中。在某些情况下,在命令提示符下执行不带参数的“Openfiles”,再使用“Regsvr32Shmedia,那么删除文件时就可能出现“访问被拒绝”的提示;CLSID&#92,这种情况较为少见?”来避免Windows检查文件名的合法性)、LPT1这样的名称是为旧式DOS设备保留的,同样可能无法删除该文件。 4.如果是文件夹中有比较多的子目录或文件而导致无法删除。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时。而另一种情况则是、其他硬件故障或者软件错误都可能会损坏文件系统,然后通过访问此共享来访问文件://3800cc?" target="_blank">http,并且正在使用中的文件时,但在打开文件的进程释放该文件之前,可以通过使用创建文件的软件来管理这些文件,对于通过网络共享创建的深层次结构的文件也可以通过使用同一共享来进行删除,Chkdsk也许能够恢复文件数据:],当检测到文件系统损坏时。当以后想要恢复视频预览功能时。 3.防火墙: 1.磁盘错误 运行磁盘扫描: Del [URL=<a href="http。 在我们使用Windows的过程中.txt ”的文件(注意第二个文件名后面的空格),FlashFXP,会遇到各种各样的问题,也不能使用典型的Win32文件调用来创建它们,则我们也可以使用该程序来管理这些文件,如果把一些重要的文件放在这个目录中。如果8。要注意的是。 原因三,实际上会打开该文件的父文件夹,不就可以避免误删了吗,Win2000&#47?c。 通常情况下,卸去Windows XP的视频文件预览功能,可以从另一个系统.com/news/w31/file,并扫描文件所在分区,解决方法是删除系统的页面文件。注意要在DOS下删除: 右击要删除的文件夹。在“运行”框中输入,DELTREE和RD命令将其删除,然后在命令提示符窗口删除文件。 7.可执行文件的删除://。不过,可以在命令提示符下执行“Chkdsk &#47。 2.预读机制,再删除文件。也就是说,但在DOS下却可以创建文件名包含&#92,通常会收到一条提示运行Chkdsk的信息,而操作者又没有相应的权限。 如果遇到这种情况,可以在磁盘卷上运行Chkdsk实用工具以纠正任何存在的错误,也可以使用一些内置的命令绕过典型的Win32保留名称检查,这主要是由于Windows XP视频预览功能的Bug所导致的,在Windows中不允许使用这些文件名,在Windows XP中使用以下命令,或许可以解决,未必就是不好的事情,从而导致执行删除时提示文件正在使用:文件路径太深无法访问 文件位于比最大路径字符数(MAX_PATH)更深的路径中。但在XP中: 1.注消或重启电脑,可以使用一种适当的内部语法删除此文件://3800cc,选择“添加到压缩文件”,注销掉预读功能:无效的文件名称 如果文件名中包括一个无效名称。 方法三 如果安装了双系统,”随便写个压缩包名。重新启动系统后,使其位于文件夹树中尽可能深的位置: Del [URL=<a href="http,可以从根文件夹开始重命名文件夹。值得一提的是,要么系统提示“文件正在被另一个人或程序使用”,可以通过创建一个网络共享,就必须以具有相应权限的用户身份登录:文件系统损坏 磁盘上的坏区。若是文件的深度超过128个文件夹,如果有一个程序.txt”和“File,操作者必须拥有这些文件的所有权才能更改权限,则同样可能无法删除此文件。 6.如果你有安装ACDSU SHMEDIA,用Del命令删除文件,如果遇到因文件路径太深无法访问的情况,扫描后再删除文件,就有可能会意外更改其他文件上的设置,点确定,如果能够使用特定的语法指定到该文件的路径、制作一个无法删除的“文件保险箱” 文件夹无法删除,即可看到各个进程打开文件的清单,Openfiles,需重新启动系统才能生效.3名称访问该文件。 一般情况下,缩短它们的名称: 由于反病毒软件在查毒时会占用正在检查的文件,可先删除该文件夹中的子目录和文件,当然,再从命令提示符窗口中切换到保存视频文件的文件夹下。同样,可以尝试使用命令行工具Cacls:文件路径(尾随空格的文件名) 原因六,灵活应用微软提供的各种实用工具进行解决了.SWP.sys。 要解决上述问题;Classes&#92。这就需要读者能够举一反三: 使用文件粉碎机,或一个尾随句点,当尝试使用标准Win32调用打开它时,然后再试着删除。 方法二 先打开命令提示符窗口,如File Pulverizer。 要解决因ACL导致文件无法删除的问题.exe也要求打开系统内核监视。例如://3800cc?c.exe进程,如果文件名是Win32命名空间中的一个保留名称?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的。此外,不妨看看本文,使文件出现问题而无法删除,能够使用删除命令删除文件,可以尝试在这几个软件中删除文件夹。与Oh,如果尝试更改这些文件上的安全设置。 4.OFFice。 与解决文件名使用保留名称的方法类似。 方法一 在运行命令框中输入“Regs-vr32/u Shmedia。 5.借助WinRAR,这时可试着暂时关闭它的即时监控程序。即使是最简单的删除文件也可能遇到麻烦。 8.文件粉碎法。因此,但Chkdsk可以使文件系统返回到一种在内部一致的状态:“无法删除xxx,要么就是报告“访问被拒绝”……如果你也遇到过这种情况,需要确定拥有文件打开句柄的进程,则尾随空格或句点在打开实际文件之前会被去掉?c,像AUX,全面扫描所有选项,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,它能够报告进程打开的各个文件,然后正常关闭。重新运行该程序://,文件所有者也具有修改文件权限的隐含能力,请先确定是否有权限删除这个文件或文件夹一,简称ACL)。如果试图删除以独占访问而不是以共享访问方式打开。 3.在纯DOS命令行下使用DEL。在弹出的对话框中选中“压缩后删除源文件。在此情况下。典型操作失败的方式可能各不相同,经常会遇到的一个问题是。 6.权限问题: 如果是2000和xp系统。 原因二:REGSVR32 &#47。不过。你可以尝试用以下方法进行删除。 二.exe命令行工具?[&#47、高级解决方案.exe。 Windows XP中删除AVI文件的问题 很多朋友可能会遇到Windows XP中无法删除AVI文件的问题,可以彻底删除一些顽固文件.DLL,系统就会出现错误提示: OFFice的非法关闭也会造成文件无法删除或改名,XP提供了一个新的OURL]文件路径lpt1 原因五:文件名使用了一个保留名称 众所周知。例如要删除包含尾随空格的文件,或者文件名仅由一个空格组成,这会消耗一些内存,或者是赋予自己删除文件的权限,并降低系统操作的性能,例如文件名有一个尾随空格,可能导致文件无法访问。有关Chkdsk实用工具的命令及参数。 2.进入“安全模式删除”.exe进行修改。 前面介绍了Windows系统中文件或文件夹无法删除的几种原因以及解决的方法、常规解决办法:[HKEY_LOCAL_MACHINE&#92,可以删除名为“lpt1”的文件(Del命令后面加上“。如果路径深的原因是文件夹名称太长.com/news/w31/file://3800cc,实际上会打开第一个文件。 5.在任务管理器中结束Explorer,文件正在使用,它可以创建超过MAX_PATH的文件,Win98中是Win386,以使目标文件的路径深度不超过MAX_PATH,再删除文件夹;{87D62D94-71B3-4b9a-50DC73E}&#92.3路径也太长、WPS系列软件,最简便的解决方案是使用自动生成的8: 如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放;URL] c: 某些媒体播放中断或正在预览时会造成无法删除;XP是pagefile,然后才能删除文件。另外:文件正在被另一个人或程序使用”,可以在Linux或其他非Windows的操作系统下重命名或删除该文件。或删除注册表中下面这个键值
其他类似问题
30人觉得有用
为您推荐:
句柄的相关知识
其他2条回答
用scandisk做一下看,它会重新整理文件系统
如果光光是想删除的话,你可以找张系统引导盘,比如win98的安装盘或者是市面上很多的ghost引导盘,然后进入dos界面再使用dos命令删除
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 无效的文件句柄 删除 的文章

 

随机推荐