2017-03-06 66 views
0

這很容易登錄到整個用戶會話(例如net useWNetAddConnection2()等),Windows網絡共享(SMB)。登錄爲這個進程在Windows網絡共享(SMB)僅

是否有任何類似的方式只會影響我目前的過程?

某種令牌系統,也許?

整個會話身份驗證是好的,如果真的沒有選擇,但我寧願避免「全球解決局部問題」。

回答

1

網絡會話(和分配的驅動器字母)的每個用戶的處理,而不是每個進程。所以不,你不能爲你的流程創建一個SMB會話,除非它使用專用的用戶帳戶運行。否則,您只需添加全局連接(例如,包括CONNECT_TEMPORARY標誌),然後在完成使用後刪除連接(WNetCancelConnection2())。

+0

短於用戶空間運行自定義SMB堆的,我想你是對的。 – mappu

0

網絡會話由Windows內核SMB客戶端驅動程序的一部分進行處理,因爲這樣他們每個Windows工作站管理(而不是用戶實際),這意味着你不能與兩個不同的憑據訪問相同的共享,並且根據limitation imposed by the windows smb client,您無法實際創建每個進程的新網絡連接。限制的原因是微軟實施了共享訪問作爲過濾驅動程序,每個共享訪問的UNC路徑(\ share \ test)作爲共享資源存儲,以使您作爲開發人員和用戶更容易生活。 (使共享訪問無縫)

它運行在升高(如運行管理員)命令提示淨使用和試圖訪問它在unelevated上下文的一個簡單的例子。

,你可以去任何一種方式:

  1. 使用samba /另一用戶級SMB實現(也有基於一些Python)在軟件
  2. 創建爲每個進程的新winstation(這有一個大開銷)
相關問題