2010-04-28 118 views
0

我使用以下代碼當我運行這對讀取從網絡文件夾,其只爲一個用戶acessing網絡共享文件夾與在vb.net

shell("net use q: \\serveryname\foldername /user:admin pwrd", AppWinStyle.Hide, True, 10000) 
      Process.Start(path) 
shell("net use q: /delete") 

限制的細節的用戶名和密碼串打開除word/excel/powerpoint以外的任何pdf或jpg或任何其他文件,一切工作正常。但只有當我訪問一個字文件時纔會出現問題。

在第一步中,我授權訪問word文件。 在第二步中,word文件已打開。 在第三,我刪除q驅動器。

問題是word文件仍然是打開的。所以我得到一個DOS窗口,說:「一些仍然連接或搜索一些文件夾的連接,你想強制斷開連接」 請幫助....如何訪問提供用戶名和密碼的文件(可編輯文件)從代碼中,同時他不應該直接訪問任何其他文件夾。

+0

我很困惑,我不明白你的問題是什麼。對於我來說,由於您正在使用位於該驅動器上的Word文件,因此您無法刪除驅動器Q。那麼說「他」(我認爲這是Word文件)「不應該直接訪問任何其他文件夾」是什麼意思? – 2010-04-28 07:29:20

+0

我把它理解爲「他」是指單詞文檔的用戶而不是文檔本身。 – 2010-04-28 07:31:05

回答

0

爲什麼不把文件複製到本地驅動器,然後關閉共享,然後打開文件。

雖然我建議可能值得看看其他類型的訪問控制。這看起來相當不安全(例如,如果你的進程在第一個命令之後但在第二個命令之前崩潰,那麼共享將保持開放供任何人使用)。

0

這似乎是一個非常糟糕的方式來做到這一點。它有許多問題:

  1. 正如您發現的那樣,只要您使用該文件,Word就會保持該文件處於打開狀態,因此您不能僅從該文件中拉出該共享。
  2. 您無法可靠地知道Word何時完成文件(例如,您不能等待進程退出,因爲它可能只是一個啓動一秒的包裝,會通知「原始」字進程打開文件並退出)
  3. 即使你可能可靠地檢測到單詞已經完成使用該文件,事實上,你有共享打開整個時間似乎與您的要求鎖定在第一個地方
  4. 我假設你沒有像這樣硬編碼的密碼,但如果你這樣做,那麼有人只是打開你的可執行文件並找出密碼是微不足道的。

或許,如果你告訴我們爲什麼你要做到這一點,我們可以提出一個更好的辦法,但如果你想要做的是提供只讀文件訪問(這似乎是這種情況下),那麼你可以授予共享本身的只讀訪問權限:根本不需要這個複雜的過程!

相關問題