예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }