我只需要判斷,本機某個檔案夾是否有共享就可以了。
如果是通過共享檔案夾來判斷,需要考慮共享檔案夾名跟檔案夾名不相同的情況。
如果需要考慮的作業系統,會有以下這些:
Windows XP
Windows 2003
Windows 2008
Windows 7
Windows 10
uj5u.com熱心網友回復:
我在下面的地址https://bbs.csdn.net/topics/30232186中查詢到下面的方法
讀注冊表
98/me:HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Network\\LanMan\\
2K/XP:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares
這種方法,有可能會出現:“共享檔案夾名”跟”檔案夾名”不相同的情況。
uj5u.com熱心網友回復:
直接運行cmd命令呼叫net share就好了
/// <summary>
/// 執行DOS命令,回傳DOS命令的輸出
/// </summary>
/// <param name="dosCommand">dos命令</param>
/// <param name="milliseconds">等待命令執行的時間(單位:毫秒),如果設定為0,則無限等待</param>
/// <returns>回傳輸出,如果發生例外,回傳空字串</returns>
public static string ExecuteDos(string dosCommand, int milliseconds)
{
string output = ""; //輸出字串
if (dosCommand != null && dosCommand != "")
{
Process process = new Process(); //創建行程物件
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe"; //設定需要執行的命令
startInfo.Arguments = "/C " + dosCommand; //設定引數,其中的“/C”表示執行完命令后馬上退出
startInfo.UseShellExecute = false; //不使用系統外殼程式啟動
startInfo.RedirectStandardInput = false; //不重定向輸入
startInfo.RedirectStandardOutput = true; //重定向輸出
startInfo.CreateNoWindow = true; //不創建視窗
process.StartInfo = startInfo;
try
{
if (process.Start()) //開始行程
{
if (milliseconds == 0)
process.WaitForExit(); //這里無限等待行程結束
else
process.WaitForExit(milliseconds); //這里等待行程結束,等待時間為指定的毫秒
output = process.StandardOutput.ReadToEnd();//讀取行程的輸出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
}
return output;
}
string result = ExecuteDos("net share",3000);
uj5u.com熱心網友回復:
public static List<string> GetSharedFolders()
{
List<string> sharedFolders = new List<string>();
// Object to query the WMI Win32_Share API for shared files...
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from win32_share");
ManagementBaseObject outParams;
ManagementClass mc = new ManagementClass("Win32_Share"); //for local shares
foreach (ManagementObject share in searcher.Get()){
string type = share["Type"].ToString();
if (type == "0") // 0 = DiskDrive (1 = Print Queue, 2 = Device, 3 = IPH)
{
string name = share["Name"].ToString(); //getting share name
string path = share["Path"].ToString(); //getting share path
string caption = share["Caption"].ToString(); //getting share description
sharedFolders.Add(path);
}
}
return sharedFolders;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/246362.html
標籤:C#
