为了一个应用程序,我想读取谷歌浏览器的缓存文件。问题在于当Chrome正在运行时,这些文件都是打开的,并且可能会被其进程更新。
因此,当我尝试使用以下代码时:
它给了我这个错误:
我认为Chrome将允许共享读取访问,因为我看到这个应用程序可以这样做。 编辑: 我想我错了。如lulyon所说,Chrome似乎锁定了该文件。因为我在vb.net上尝试了以下内容:
因此,当我尝试使用以下代码时:
data_1 = open("C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Cache\data_1")
它给了我这个错误:
IOError: [Errno 13] Permission denied: 'C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache\\data_1'
由于它说“权限被拒绝”(编辑:我对该文件具有“完全控制”的权限),因此我还尝试在提升的cmd窗口中运行它。同样的情况发生了。当Chrome没有运行时它可以正常工作。我希望能够像.net上的FileShare那样做到共享读取。我认为Chrome将允许共享读取访问,因为我看到这个应用程序可以这样做。 编辑: 我想我错了。如lulyon所说,Chrome似乎锁定了该文件。因为我在vb.net上尝试了以下内容:
Dim d As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
它说:
由于文件正在被另一个进程使用,因此该进程无法访问该文件。
最初我认为ChromeCacheView将文件复制到其他位置。 因此,我使用进程监视器进行了深入的研究。 请查看此截图。 那不是意味着两个应用程序共享相同的文件吗?
我认为它们之间不会有任何理解,因为ChromeCacheView是第三方应用程序。 那么这怎么可能?