绕过Windows文件锁定


1

我有一个可编程/可编写脚本的现成第三方产品的问题,它创建了我们需要后处理(移动,压缩或其他)的文件。

该产品让我们在完成输出后运行命令,所以一切都很完美,对吧?

与其说是因为应用程序在调用我们的脚本时仍然具有“打开”文件,因此Windows不会让我触摸它们或它们所在的目录。

我到目前为止唯一的想法是 start mystuff.bat并在睡眠时启动mystuff.bat,但这会在错误处理方面打开一堆蠕虫,因为服务器程序无法知道后处理作业何时完成。

有谁知道如何解决这个问题?


  • 这些文件将写入Windows服务器(2008 R2)上的本地磁盘。
  • 要求软件供应商修复他们的程序到目前为止失败:-(


该软件是PrintNetT,一个打印生产系统,它作为服务/守护程序运行,处理作业请求,创建目录+文件,在创建它们的批处理期间保持锁定。它在服务器(无头)上全天候运行。批处理完成后,文件不再被锁定。

2
您可以使用脚本编写脚本 处理 来自Sysinternals
Nifle

1
@Nifle,感谢我对我的问题的精彩编辑。现在它清晰,简洁,重点突出。还在问我想问什么。谢了哥们!我赞成你的评论 handle 感谢清理问题。
MattBianco

Answers:


1

这是什么类型的“产品”?显然它是软件,但它是可执行文件吗?它是否具有唯一的进程(也就是说,它是否显示在任务管理器的进程选项卡中)?如果是这样的话,那将是我最好的选择,让它“关闭”。

但是,如果它不是正在运行的文件类型,您是否能够注销或重新启动而不会丢失它所需的任何内容?如果是这样,试试看,看看是否有效。如果没有,您需要提供更多信息。


我认为在pstools中也有一些东西,如果你需要为它做命令行脚本。
Journeyman Geek

0

您可以尝试复制文件或使用不需要完全读/写/删除访问权限的程序对其进行存档(zip)。我认为适用于Windows的大多数Linux程序都具有此属性。这样,您可以在应用程序退出之前复制文件,处理数据,然后定期清理剩余的内容。

要查看此方法是否有效,您可以尝试使用体面的文本编辑器(如Visual Studio,Notepad ++或Vim)打开仍然“打开”的任何文件。


我试过了 GOW 并遇到同样的锁定问题。我认为这不取决于应用程序决定它是否可以读取文件。它必须由O / S决定。
MattBianco

link is borked - 使用markdown作为链接,而不是html使其正常工作
Journeyman Geek

@MattBianco:这是第一个打开文件的程序,无论后续程序是否可以打开文件。如果未指示首选项,则OS确定默认行为。不幸的是,Windows默认锁定文件(而在Linux下需要花费更多的精力)。如果在应用程序运行时绝对无法打开文件,请等待应用程序使用SysInternals句柄释放文件,强制文件锁定轮询( stackoverflow.com/questions/1951791/...
Interarticle

或者通过编写注入此应用程序的绕道程序来关闭应用程序中的文件句柄: research.microsoft.com/en-us/projects/detours
Interarticle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.