簡體   English   中英

在C#中讀取隱藏的份額

[英]Reading hidden share in C#

所以我有一個小的C#應用​​程序需要定期檢查網絡上多台機器上的目錄內容。 我以為我只能讀取\\ hostname \\ C $作為目錄路徑,但是使用普通的Directory類似乎沒有辦法對其他服務器進行身份驗證,因此您可以訪問隱藏的共享。 我確信有一個簡單的方法可以做到這一點,我忽略了,但此刻我有點難過。

來自http://bytes.com/forum/thread689145.html

所有進程都在登錄用戶帳戶的上下文中運行。 如果要在另一台計算機上打開文件,則應用程序必須在具有在該計算機上打開文件的權限的用戶的上下文中運行。 您可以使用模擬執行此操作。

最簡單的方法似乎是為當前用戶提供其他計算機上的適當權限。

要使用運行該進程的用戶沒有權限的共享進行身份驗證(通常是管理共享的情況),請嘗試運行net use命令:

net use SERVERNAME\IPC$ /user:USERNAME PASSWORD

嘗試在實際嘗試訪問共享的代碼之前在單獨的進程中運行它,例如:

ProcessStartInfo psi = new ProcessStartInfo(
    "net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD);
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// The code to access the share follows...

如果不適合為運行該進程的用戶帳戶授予共享權限,這是非常有用的,例如,對於最終用戶應用程序需要訪問用戶本身不應該直接訪問的共享上的數據的安全模型。

您是否在尋找在運行時設置當前用戶的方法?

如果沒有,只要運行該進程的用戶可以訪問這些計算機,這將適用於您:

DirectoryInfo di = new DirectoryInfo(@"\\machineName\c$\temp");

FileInfo[] files = di.GetFiles();

foreach (FileInfo f in files)
{
    Debug.WriteLine(f.Name);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM