C#利用WMI实现本地文件夹的共享与取消共享

本文介绍如何利用Windows Management Instrumentation (WMI)来设置和取消本地文件夹的网络共享功能。通过C#示例代码展示了具体的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows Management Instrumentation (WMI) is the Microsoft implementation of Web-based Enterprise Management (WBEM), which is an industry initiative to develop a standard technology for accessing management information in an enterprise environment.

具体参见:http://msdn.microsoft.com/en-us/library/aa384642(VS.85).aspx

WMI提供了非常强大的系统功能,比如主板、BIOS、内存、磁盘、网络等的操作(提取、修改信息)。

项目需要,探索了一下WMI实现本地文件夹共享的功能。

以下代码需要在项目中Add Refrence -- System.Management

功能1--设置共享文件夹

        /**

         * ShareNetFolder方法用于把本地文件夹设置为共享

         * param

         *      string FolderPath 本地文件夹路径

         *      string ShareName 共享名称

         *      string Description 共享描述

         */

        public static int ShareNetFolder(string FolderPath, string ShareName, string Description)

        {

            try

            {

                // Create a ManagementClass object

                ManagementClass managementClass = new ManagementClass("Win32_Share");

                // Create ManagementBaseObjects for in and out parameters

                ManagementBaseObject inParams = managementClass.GetMethodParameters("Create");

                ManagementBaseObject outParams;

                // Set the input parameters

                inParams["Description"] = Description;

                inParams["Name"] = ShareName;

                inParams["Path"] = FolderPath;

                inParams["Type"] = 0x0; // Disk Drive

                //Another Type:

                //        DISK_DRIVE = 0x0

                //        PRINT_QUEUE = 0x1

                //        DEVICE = 0x2

                //        IPC = 0x3

                //        DISK_DRIVE_ADMIN = 0x80000000

                //        PRINT_QUEUE_ADMIN = 0x80000001

                //        DEVICE_ADMIN = 0x80000002

                //        IPC_ADMIN = 0x8000003

                //inParams["MaximumAllowed"] = int maxConnectionsNum;

                // Invoke the method on the ManagementClass object

                outParams = managementClass.InvokeMethod("Create", inParams, null);

                // Check to see if the method invocation was successful

                if ((uint)(outParams.Properties["ReturnValue"].Value) != 0)

                {

                    throw new Exception("Unable to share directory.");

                }

            }

            catch (Exception ex)

            {

                return -1;

            }

            return 0;

        }

 

功能2--取消共享文件夹

        public static int CancelShareNetFolder(string ShareName)

        {

            try

            {

                SelectQuery selectQuery = new SelectQuery("Select * from Win32_Share Where Name = '" + ShareName + "'");

                ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);

                foreach (ManagementObject mo in searcher.Get())

                {

                    mo.InvokeMethod("Delete",null,null);

                }



            }

            catch (ManagementException err)

            {

                return -1;

            }

            return 0;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值