如何查看文件正在被哪些进程占用

如何查看文件正在被哪些进程占用,第1张

查看方法:

1、打开资源管理器,选择性能选项卡;

2、点击右下角的资源监视器;

3、选择概述选项卡;

4、选择磁盘;

5、在磁盘下方d出的列表中,第三列文件是当前被进程打开的文件,需要最大化窗口并手动调整列宽才能看清。

结束进程方法:

1、在桌面底部任务栏右键,点击启动任务管理器;

2、点击进程看内存选项卡下面,是对应进程的占用内存情况;

3、选择相应进程,点击结束进程,即可关闭进程释放内存。

process

monitor就行(它相当于以前的文件监控用的filemon加注册表监控regmon的合集)

,用这个软件可以监控到其它软件在运行时访问的各种文件和注册表,也可以针对性的只过滤出某一类 *** 作,比如仅仅只限写入。

分类: 电脑/网络 >> 反病毒

问题描述:

用卡巴斯基时出现:注意!检测到木马程序访问 对象C:\program\UPDAT\updateexe阻止,对象是特洛伊木马Trojan-Downloaderwin32QQHdpergon建议删除对象删除确定后出现:C:\program\UPDAT\updateexe不能删除,没有访问权限或拒绝访问忽略打开UPDAT文件夹后,发现这个文件,我把这个文件直接删除了但不久后卡巴斯基又提示在相同位置发现这个病毒UPDAT文件夹中还有一个文件是updatedat,请各位帮帮忙,我对这些东西实在不太懂,要讲详细点啊

解析:

一、常规解决办法:

1.注消或重启电脑,然后再试着删除。

2.进入“安全模式删除”。

3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。

4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。

5.在任务管理器中结束Explorerexe进程,然后在命令提示符窗口删除文件。

6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。

二、高级解决方案:

1.磁盘错误

运行磁盘扫描,并扫描文件所在分区,扫描前确定已选上修复文件和坏扇区,全面扫描所有选项,扫描后再删除文件。

2.预读机制:

某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入:REGSVR32 /U SHMEDIADLL,注销掉预读功能。或删除注册表中下面这个键值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。

3.防火墙:

由于反病毒软件在查毒时会占用正在检查的文件,从而导致执行删除时提示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。

4.OFFice、WPS系列软件:

OFFice的非法关闭也会造成文件无法删除或改名。重新运行该程序,然后正常关闭,再删除文件。

5.借助WinRAR:

右击要删除的文件夹,选择“添加到压缩文件”。在d出的对话框中选中“压缩后删除源文件,”随便写个压缩包名,点确定。

6.权限问题:

如果是2000和xp系统,请先确定是否有权限删除这个文件或文件夹。

7.可执行文件的删除:

如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件,Win98中是Win386SWP,Win2000/XP是pagefilesys。注意要在DOS下删除。

8.文件粉碎法:

使用文件粉碎机,如File Pulverizer,可以彻底删除一些顽固文件。

三、制作一个无法删除的“文件保险箱”

文件夹无法删除,未必就是不好的事情,如果把一些重要的文件放在这个目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的,但在DOS下却可以创建文件名包含\的文件夹。

在我们使用Windows的过程中,会遇到各种各样的问题。即使是最简单的删除文件也可能遇到麻烦,要么系统提示“文件正在被另一个人或程序使用”,要么就是报告“访问被拒绝”……如果你也遇到过这种情况,不妨看看本文。

原因一:文件正在使用中

在删除文件时,经常会遇到的一个问题是,文件正在使用,无法删除。如果试图删除以独占访问而不是以共享访问方式打开,并且正在使用中的文件时,系统就会出现错误提示:“无法删除xxx:文件正在被另一个人或程序使用”。而另一种情况则是,能够使用删除命令删除文件,但在打开文件的进程释放该文件之前,文件实际上并未删除。

要解决上述问题,需要确定拥有文件打开句柄的进程,然后关闭此进程。在以前的Windows中,我们可以使用资源工具包的Ohexe。但在XP中,安装好的Support

Tools却不带Ohexe。不过,XP提供了一个新的Openfilesexe命令行工具,它能够报告进程打开的各个文件。与Ohexe相似,Openfilesexe也要求打开系统内核监视,这会消耗一些内存,并降低系统 *** 作的性能。打开系统监视的命令是“Openfiles

/local

on”,它会启用系统全局标志“维护对象列表”,需重新启动系统才能生效。重新启动系统后,在命令提示符下执行不带参数的“Openfiles”,即可看到各个进程打开文件的清单。

原因二:文件系统损坏

磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统,使文件出现问题而无法删除。典型 *** 作失败的方式可能各不相同,当检测到文件系统损坏时,通常会收到一条提示运行Cdsk的信息。

如果遇到这种情况,可以在磁盘卷上运行Cdsk实用工具以纠正任何存在的错误。根据损坏的性质,Cdsk也许能够恢复文件数据,也许无法恢复,但Cdsk可以使文件系统返回到一种在内部一致的状态。有关Cdsk实用工具的命令及参数,可以在命令提示符下执行“Cdsk

/?”查阅。

原因三:文件使用了存取控制列表

如果某个文件使用了存取控制列表(Access Control

List,简称ACL),而 *** 作者又没有相应的权限,那么删除文件时就可能出现“访问被拒绝”的提示。

通常情况下,管理员具有取得任何文件所有权的隐含能力,文件所有者也具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。

要解决因ACL导致文件无法删除的问题,就必须以具有相应权限的用户身份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是, *** 作者必须拥有这些文件的所有权才能更改权限。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时,可以尝试使用命令行工具Caclsexe进行修改。

原因四:文件名使用了一个保留名称

众所周知,像AUX、LPT1这样的名称是为旧式DOS设备保留的。为了向后兼容,在Windows中不允许使用这些文件名,也不能使用典型的Win32文件调用来创建它们。反之,如果文件名是Win32命名空间中的一个保留名称,则同样可能无法删除此文件。

要解决此类问题,可以在Linux或其他非Windows的 *** 作系统下重命名或删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使用一些内置的命令绕过典型的Win32保留名称检查。例如,在Windows

XP中使用以下命令,可以删除名为“lpt1”的文件(Del命令后面加上“?”来避免Windows检查文件名的合法性):

Del 3800cc/news/w31/filec:]c:[/URL]文件路径lpt1

原因五:无效的文件名称

如果文件名中包括一个无效名称,例如文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提的是,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“Filetxt”和“Filetxt

”的文件(注意第二个文件名后面的空格),当使用标准Win32调用打开第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“

”(一个空格字符),当尝试使用标准Win32调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果尝试更改这些文件上的安全设置,就有可能会意外更改其他文件上的设置。

与解决文件名使用保留名称的方法类似,可以使用一种适当的内部语法删除此文件。例如要删除包含尾随空格的文件,可以使用如下命令:

Del 3800cc/news/w31/file][/URL] c:文件路径(尾随空格的文件名)

原因六:文件路径太深无法访问

文件位于比最大路径字符数(MAX_PATH)更深的路径中,可能导致文件无法访问,当然,这种情况较为少见。如果路径深的原因是文件夹名称太长,最简便的解决方案是使用自动生成的83名称访问该文件。如果83路径也太长,可以从根文件夹开始重命名文件夹,缩短它们的名称,以使目标文件的路径深度不超过MAX_PATH。若是文件的深度超过128个文件夹,可以通过创建一个网络共享,使其位于文件夹树中尽可能深的位置,然后通过访问此共享来访问文件。

一般情况下,如果遇到因文件路径太深无法访问的情况,可以通过使用创建文件的软件来管理这些文件。也就是说,如果有一个程序,它可以创建超过MAX_PATH的文件,则我们也可以使用该程序来管理这些文件。此外,对于通过网络共享创建的深层次结构的文件也可以通过使用同一共享来进行删除。

前面介绍了Windows系统中文件或文件夹无法删除的几种原因以及解决的方法。在某些情况下,可能还会遇到上述各种原因的不同组合,使得删除文件的过程更加复杂。这就需要读者能够举一反三,灵活应用微软提供的各种实用工具进行解决了。

Windows XP中删除AVI文件的问题

很多朋友可能会遇到Windows XP中无法删除AVI文件的问题,这主要是由于Windows

XP视频预览功能的Bug所导致的。你可以尝试用以下方法进行删除。

方法一 在运行命令框中输入“Regs-vr32/u

Shmediadll”并回车,卸去Windows

XP的视频文件预览功能。当以后想要恢复视频预览功能时,再使用“Regsvr32Shmediadll”命令重新注册即可。

方法二

先打开命令提示符窗口,然后在任务管理器中结束Explorer进程,再从命令提示符窗口中切换到保存视频文件的文件夹下,用Del命令删除文件。

方法三

如果安装了双系统,可以从另一个系统,如Win98下进行删除。

有时候 处于业务的需要 我们要不断的监视文件的变化 比如文件的创建 删除 重命名等 而且某些人要确保重要文件的只读 并且要及时的报告文件版本的变更情况 或者 你想监视你的文件夹被别人更改 肆意删除而又不知道是谁干的 在什么时候干的?于是你就考虑要写一个监视程序 偷偷的 记录文件夹 作的情况

有些人采取常规的方式 即写一个桌面应用程序 其界面可能是隐藏的 采用每隔一个事件片段读取文件信息 然后写到一个log文件中 然后设置系统启动的事件自动加载程序 (好像很多人是这样窃取QQ密码的 ) 其缺点 不是连续的获取信息 因为他们采用了Timer的tick事件 在NT系统中 可能要一定的权限才可以运行 比如要管理员身份等 还有系统中会有进程显示 显然很容易shut down

我们建议的方案 采用 NET的Windows Service 首先可以克服以上缺点 而且较VB 的编程而言 NET中写windows service一如反掌

思路 在 NET创建的服务中调用System IO FileSystemWatcher对象 每次被监视的文件或者文件夹变化的时候 调用IO系统的FileStream和StreamWriter把变更信息写到log文件中

关于 NET中的Windows服务

Windows服务 是一些长久运行的程序 而并不需要依靠登录用户或客户程序来保持它的运行 它们没有自己的用户界面 可以在它们自己独有的安全级别和会话上下文中运行 我们比较熟悉的Windows服务范例包含了从打印池到SQL服务器以及它的分布式事务协作(DTC) 服务只可以运行在NT 以及后继产品比如XP下运行 它们通过Microsoft Management Console (MMC)提供了一个专门的管理界面(开始->运行 >Services msc)

在 NET中创建项目的时候 有一个Windows服务的模板 选择新建 这个 *** 作自动为我建立了一个新的类 它是继承了 NET内建了System ServiceProcess ServiceBase类 同时它提供给我一个可视化的设计器 一个图形化的快速开发工具 它特别的为那些本身没有用户界面的工程 我可以点击这个设计器 设定我的服务的名字(我命名为 File Watching )

当启动某项服务时 系统将定位相应的可执行文件 并运行该服务的 OnStart 方法(它包含在可执行文件内) 但是 运行服务与运行可执行文件并不相同 可执行文件仅加载服务 服务则通过 服务控制管理器 访问(例如启动和停止)

当首次在服务上调用 开始 时 可执行文件将调用 ServiceBase 派生类的构造函数 在构造函数执行之后将立即调用 OnStart 命令处理方法 在服务首次加载之后 构造函数不会再次执行 因此有必要将构造函数执行的处理和 OnStart 执行的处理分开 可以由 OnStop 释放的任何资源都应在 OnStart 中创建 如果服务在 OnStop 释放资源后再次启动 那么 在构造函数中创建资源会妨碍这些资源的正确创建

服务控制管理器 (SCM) 提供与服务交互的方式 可以使用 SCM 将 开始 (Start) 停止 (Stop) 暂停 (Pause) 继续 (Continue) 或自定义命令传递到服务中 SCM 使用 CanStop 和 CanPauseAndContinue 的值 决定服务是否接受 停止 暂停 或 继续 命令 仅当服务类中相应的属性 CanStop 或 CanPauseAndContinue 为 true 时 才会在 SCM 的上下文菜单中启用 停止 暂停 或 继续 如果已启用 则相应的命令将传递到服务 并且调用 OnStop OnPause 或 OnContinue 如果 CanStop CanShutdown 或 CanPauseAndContinue 为 false 则即使已实现相应的命令处理方法(如 OnStop) 也不会予以处理

上面是创建任何一个服务 我们都会涉及到的 只是 具体在监视文件夹变化的时候 我们用到了FileSystemWatcher

关于FileSystemWatcher

侦听文件系统更改通知 并在目录或目录中的文件发生更改时引发事件

使用 FileSystemWatcher 监视指定目录中的更改 可监视指定目录中的文件或子目录的更改 该组件可以监视本地计算机 网络驱动器或远程计算机上的文件 (当然只读的媒体介质比如cd和dvd 它们文件的属性不会改变 所以也就不能触发事件)

若要监视所有文件中的更改 请将 Filter 属性设置为空字符串 ( ) 若要监视特定的文件 请将 Filter 属性设置为该文件名 例如 若要监视文件 MyDoc txt 中的更改 请将 Filter 属性设置为 MyDoc txt 也可以监视特定类型文件中的更改 例如 若要监视文本文件中的更改 请将 Filter 属性设置为 txt

可监视目录或文件中的若干种更改 例如 可监视文件或目录的 Attributes LastWrite 日期和时间或 Size 方面的更改 通过将 FileSystemWatcher NotifyFilter 属性设置为 NotifyFilters 值之一来达到此目的

可监视文件或目录的重命名 删除或创建 例如 若要监视文本文件的重命名 请将 Filter 属性设置为 txt 并调用 WaitForChanged 方法之一 调用时给出 WatcherChangeTypes 值的 Renamed

Demo

新建一个project 选择windows 服务类型 命名为WinServiceFileWatching 我们看到project的引用中自动添加了System ServiceProcess名空间(这就是创建一个服务的函数集) 从工具中的组件中选择FileSystemWatcher 拖放到service 的设计模式上 然后设置如下属性

Filter 获取或设置筛选字符串 用于确定在目录中监视哪些文件 我们设置为 即所有文件 IncludeSubdirectories 获取或设置一个值 该值指示是否监视指定路径中的子目录 设置为true Path 获取或设置要监视的目录的路径 设置为我们要监视的对象 比如C:\DonnetData

然后添加以下代码

Protected Overrides Sub OnStart(ByVal args() As String)

在此处添加启动服务的代码 此方法应设置具体的 *** 作

以便服务可以执行它的工作

FileSystemWatcher EnableRaisingEvents = True

我们也可以根据输入的参数args动态设定要监视的对象

FileSystemWatcher path= args( )

End Sub

创建文件(夹)时候触发 记录创建信息到e:\log txt中

Private Sub FileSystemWatcher _Created(ByVal sender As Object ByVal e As System IO FileSystemEventArgs) Handles FileSystemWatcher Created

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() & Microsoft VisualBasic vbTab & 创建 & e FullPath)

sw Close()

fs Close()

End Sub

Rename文件(夹)时候触发 记录创建信息到e:\log txt中

Private Sub FileSystemWatcher _Renamed(ByVal sender As Object ByVal e As System IO RenamedEventArgs) Handles FileSystemWatcher Renamed

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() & Microsoft VisualBasic vbTab & 重命名 & e OldFullPath & & e FullPath)sw Close()

fs Close()

End Sub

删除文件(夹)时候触发 记录创建信息到e:\log txt中

Private Sub FileSystemWatcher _Deleted(ByVal sender As Object ByVal e As System IO FileSystemEventArgs) Handles FileSystemWatcher Deleted

Dim fs As New FileStream( e:\log txt FileMode Append)

Dim sw As New StreamWriter(fs)

sw WriteLine(Now() & Microsoft VisualBasic vbTab & 删除 & e FullPath)

sw Close()fs Close()

End Sub

到目前为止 这个服务已经写好了 下面作一个安装程序

在service的设计模式上点击右键 选择添加安装程序 系统会自动添加一个类ProjectInstaller 设计模式上有一个ServiceProcessInstaller 和ServiceInstaller 设置ServiceInstaller 的Display Name为File Watching Service starttype为Automatic 表示自动启动 设置ServiceProcessInstaller 的account为LocalSystem

由于服务是不能运行的 我们选择生成解决方案 ok!

最后安装我们的服务

NET Framework自带了一个工具 InstallUtil 使用很简单InstallUtil c:\winservicefilewatching\bin\winservicefilewatching exe 刚才编译好的程序的路径 这样就安装好了 Uninstall也很容易 首先SCM中关闭服务 InstallUtil/u c:\ \winservicefilewatching exe the same path

这样在系统的services中就会多出一个服务 显示为File Watching Service 选择启动就可以开始监视

总结

lishixinzhi/Article/program/net/201311/15520

计算机故障分为软件故障和硬件故障

软件故障的原因

软件发生故障的原因有几个,丢失文件、文件版本不匹配、内存冲突、内存耗尽,具体的情况不同,也许只因为运行了一个特定的软件,也许很严重,类似于一个的系统级故障。

为了避免这种错误的出现,我们可以仔细研究一下每种情况发生的原因,看看怎样检测和避免。

丢失文件:

你每次启动计算机和运行程序的时候,都会牵扯到上百个文件,绝大多数文件是一些虚拟驱动程序virtualdevicedrivers(VxD),和应用程序非常依赖的动态链接库dynamiclinklibrary(DLL)。VXD允许多个应用程序同时访问同一个硬件并保证不会引起冲突,DLL则是一些独立于程序、单独以文件形式保存的可执行子程序,它们只有在需要的时候才会调入内存,可以更有效地使用内存。当这两类文件被删除或者损坏了,依赖于它们的设备和文件就不能正常工作。

要检测一个丢失的启动文件,可以在启动PC的时候观察屏幕,丢失的文件会显示一个“不能找到某个设备文件”的信息和该文件的文件名、位置,你会被要求按键继续启动进程。

造成类似这种启动错误信息的绝大多数原因是没有正确使用卸载软件。如果你有一个在WINDOWS启动后自动运行的程序如NortonUtilities、NutsandBolts等,你希望卸载它们,应该使用程序自带的“卸载”选项,一般在“开始”菜单的“程序”文件夹中该文件的选项里会有,或者使用“控制面板”的“添加/卸载”选项。如果你直接删除了这个文件夹,在下次启动后就可能会出现上面的错误提示。其原因是WINDOWS找不到相应的文件来匹配启动命令,而这个命令实际上是在软件第一次安装时就已经置入到注册表中了。你可能需要重新安装这个软件,也许丢失的文件没有备份,但是至少你知道了是什么文件受到影响和它们来自哪里。

对文件夹和文件重新命名也会出现问题,在软件安装前就应该决定好这个新文件所在文件夹的名字。

如果你删除或者重命名了一个在“开始”菜单中运行的文件夹或者文件,你会得到另外一个错误信息,在屏幕上会出现一个对话框,提示“无效的启动程序”并显示文件名,但是没有文件的位置。如果桌面或者“开始”菜单中的快捷键指向了一个被删除的文件和文件夹,你会得到一个类似的“丢失快捷键”的提示。

丢失的文件可能被保存在一个单独的文件中,或是在被几个出品厂家相同的应用程序共享的文件夹中,例如文件夹\SYMANTEC就被NortonUtilities、NortonAntivirus和其他一些Symantec出品的软件共享,而对于\WINDOWS\SYSTEM来说,其中的文件被所有的程序共享。你最好搜索原来的光盘和软盘,重新安装被损坏的程序。

文件版本不匹配:

绝大多数的WIN9X用户都会不时地向系统中安装各种不同的软件,包括WINDOWS的各种补丁例如Y2K,或者将WIN95升级到WIN98,这其中的每一步 *** 作都需要向系统拷贝新文件或者更换现存的文件。每当这个时候,就可能出现新软件不能与现存软件兼容的问题。

因为在安装新软件和WINDOWS升级的时候,拷贝到系统中的大多是DLL文件,而DLL不能与现存软件“合作”是产生大多数非法 *** 作的主要原因,即使会快速关闭被影响的程序,你也没有额外的时间来保存尚未完成的工作。

WINDOWS的基本设计使得上述DLL错误频频发生。和其他版本不同,WIN95允许多个文件共享\WINDOWS\SYSTEM文件夹的所有文件,例如可以有多个文件使用同一个Whatnotdll,而不幸的是,同一个DLL文件的不同版本可能分别支持不同的软件,很多软件都坚持安装适合它自己的Whatnotdll版本来代替以前的,但是新版本一定可以和其他软件“合作愉快”吗?如果你运行了一个需要原来版本的DLL的程序,就会出现“非法 *** 作”的提示。

在安装新软件之前,先备份\WINDOWS\SYSTEM文件夹的内容,可以将DLL错误出现的几率降低,既然大多数DLL错误发生的原因在此,保证DLL运行安全是必要的。而绝大多数新软件在安装时也会观察现存的DLL,如果需要置换新的,会给出提示,一般可以保留新版,标明文件名,以免出现问题。

绝大多数卸载软件也可以用来监视安装,这些监视记录可以保证在以后的卸载时更加准确,另外你也可以知道哪些文件被修改了,如果提供备份功能,可以保存旧版本的文件和安装过程中被置换的文件。

WIN98和WIN95有所不同,它在将WINDOWS升级和安装新软件时自动备份被置换的文件,如果在WIN98安装后出现问题,你可以使用VersionConflictManager(VCM)帮助你发现哪些文件被改变了,可以从WIN98的备份中将原来的版本恢复出来,而VCM可以从“开始”菜单、附件、系统工具或者安装WIN98的光盘中寻找。

另一个避免出现DLL引起的非法 *** 作的办法是不同时运行不同版本的同一个软件,即使你为新版本软件准备了另一个新文件夹,如果你一定要同时使用两个版本,就会出现非法错误信息。

非法 *** 作:

非法 *** 作会让很多用户觉得很迷惑,如果你仔细研究的话会就发现软件才是真凶,每当有非法 *** 作信息出现,相关的程序和文件都会和错误类型显示在一起,如果在WINDOWS31中可能是一般保护性错误(GPF),一般是由于有两个软件同时使用了内存的同一个区域,但是即使知道原因也无法避免这一类错误。

用户可以通过错误信息列出的程序和文件来研究错误起因,因为错误信息并不直接指出实际原因,如果给出的是“未知”信息,可能数据文件已经损坏,看看有没有备份或者看看厂家是否有文件修补工具。

如果是Microsoft的软件,你可以将程序名和错误信息作为关键字在Microsoft的站点进行搜索。例如我们到微软的基本知识站点 >

以上就是关于如何查看文件正在被哪些进程占用全部的内容,包括:如何查看文件正在被哪些进程占用、有没有什么程序可以监视某程序访问了哪些东西、检测到木马程序,无法删除,求教高手!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存