2013-10-02 59 views
0

我的.NET應用程序更新位於域內共享文件夾中的某個.xls文件。使用VB.NET,我如何檢查該文件是否被另一個用戶使用,並取消共享/關閉它,所以我的代碼可以正確更新文件? 注意:.Exe文件(我的應用程序)將在共享文件夾所在的服務器上執行。如何關閉/取消共享另一個用戶正在使用的文件?

回答

2

Windows和NTFS旨在防止出現這種情況。除非你:

  • 獲取其持有的.xls文件打開,關閉它
  • 關閉服務器的假設Excel文件的網絡連接是由客戶端PC打開Excel應用程序 - 一個非常不受歡迎的一步採取
  • 發現在其上運行Excel.exe實例的PC,並使用Windows Taskkill命令行命令在計算機上終止所有Excel.exe實例(因爲您不一定知道哪個實例已打開) - 另一個不受歡迎的步驟採取
  • 看看this answer,但這使用第三方utiliti es,並沒有解釋這些實用程序如何執行它們所做的操作,儘管您可能可以通過Process.Start來執行它們。

你只是不能得到Windows/NTFS釋放文件鎖定。

我不確定是否可以使用xls(與xls_相對)可能的替代方法是使文件shared,儘管這有一些限制。

+0

好吧,我明白了,但是我必須說我是該文件的所有者,如果我在我的機器上執行該文件,應該有可能取消共享該文件...因爲它是完全一樣的,如果我只需手動取消共享該文件夾。我只想自動執行「不共享」過程,我知道如何使用.bat來做,但是有沒有辦法使用.NET?。 – phalanx

+1

所有者與否,Windows不會輕易讓您刪除文件鎖定。如果您可以使用.bat文件解鎖文件,則可以使用.NET來運行bat文件。看看:http://stackoverflow.com/questions/2178872/run-batch-file-in-vb-net。 恐怕我還沒有聽說過任何人使用.NET直接解鎖文件,或者如果他們是,他們沒有分享他們的知識。 –

+0

只是爲了好奇,有沒有辦法(通過代碼)來獲取運行EXCEL.EXE的PC?所以我可以在一個.bat中使用Windows Taskiller並將其命名爲 – phalanx

相關問題