public void FillInfo(NETRESOURCE resource) { try { resource_intern = WinApiWNETwrapper.GetResourceInfo(resource.lpRemoteName); Text = resource_intern.lpRemoteName; textBoxRemoteName.Text = resource_intern.lpRemoteName; textBoxDisplayType.Text = resource_intern.dwDisplayType.ToString(); textBoxResourceType.Text = resource_intern.dwType.ToString(); textBoxResourceComment.Text = resource_intern.lpComment; textBoxProviderName.Text = resource_intern.lpProvider; } catch (Exception ex) { errorProvider1.SetIconAlignment(textBoxRemoteName, ErrorIconAlignment.MiddleLeft); errorProvider1.SetError(textBoxRemoteName, ex.Message); //Messages.ShowException(ex); } var netinfo = new NETINFOSTRUCT(); try { netinfo = WinApiWNETwrapper.GetNetworkInfo(resource_intern.lpProvider); textBoxNetworkProviderType.Text = netinfo.wNetType.ToString(); textBoxNetworkProviderVersion.Text = string.Format("0x{0:X}", netinfo.dwProviderVersion); } catch (Exception ex) { errorProvider1.SetIconAlignment(textBoxNetworkProviderType, ErrorIconAlignment.MiddleLeft); errorProvider1.SetError(textBoxNetworkProviderType, ex.Message); } if ((resource_intern.dwDisplayType == ResourceDisplayType.SERVER) && (netinfo.wNetType == NetworkType.LANMAN)) { fill_netserver_page(); tabControl1.TabPages.Remove(tabPageShareInfo); } else if ((resource_intern.dwDisplayType == ResourceDisplayType.SHARE) || (resource_intern.dwDisplayType == ResourceDisplayType.SHAREADMIN)) { fill_share_page(); tabControl1.TabPages.Remove(tabPageFilesInfo); tabControl1.TabPages.Remove(tabPageServerInfo); tabControl1.TabPages.Remove(tabPageSessionInfo); tabControl1.TabPages.Remove(tabPageTransportInfo); } else { tabControl1.TabPages.Remove(tabPageShareInfo); tabControl1.TabPages.Remove(tabPageFilesInfo); tabControl1.TabPages.Remove(tabPageServerInfo); tabControl1.TabPages.Remove(tabPageSessionInfo); tabControl1.TabPages.Remove(tabPageTransportInfo); } }
protected override void internal_refill() { List <NETRESOURCE> new_list = new List <NETRESOURCE>(); //create enumerator WnetResourceEnumerator res_enum = null; try { OnLongOperaion("Wait while scanning network...", true); res_enum = new WnetResourceEnumerator (resource_root, ResourceScope.GLOBALNET, ResourceType.ANY, ResourceUsage.NONE); OnLongOperaion("Scanning completed.", false); } catch (Win32Exception win_ex) { if (win_ex.NativeErrorCode == 5) //access denied { //try to establish connection with net credetials if (establish_connection(resource_root)) { //retry res_enum = new WnetResourceEnumerator (resource_root, ResourceScope.GLOBALNET, ResourceType.ANY, ResourceUsage.NONE); } else { throw win_ex; } } else { throw win_ex; } } finally { OnLongOperaion("Completed", false); } //fill foreach (NETRESOURCE one_res in res_enum) { new_list.Add(one_res); } //case if resourse_root is SMB server - add hidden shares if ((resource_root.dwDisplayType == ResourceDisplayType.SERVER) && (WinApiWNETwrapper.GetNetworkInfo(resource_root.lpProvider).wNetType == NetworkType.LANMAN)) { //retrieve fake hidden NETRESOURCEs OnLongOperaion("Wait while scanning hidden resources...", true); NETRESOURCE[] hidden_resources = get_hidden_resources(resource_root); OnLongOperaion("Scanning completed.", false); new_list.AddRange(hidden_resources); } //fill work list internal_list.Clear(); foreach (NETRESOURCE one_res in new_list) { internal_list.Add(one_res, null); } }