ArgusTV.Recorders.Common.Utility.CreateUncShare C# (CSharp) Метод

CreateUncShare() публичный статический Метод

public static CreateUncShare ( string shareName, string localPath ) : bool
shareName string
localPath string
Результат bool
        public static bool CreateUncShare(string shareName, string localPath)
        {
            ManagementScope scope = new System.Management.ManagementScope(@"root\CIMV2");
            scope.Connect();

            using (ManagementClass wmiShare = new ManagementClass(scope, new ManagementPath("Win32_Share"), null))
            {
                SecurityIdentifier worldSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
                byte[] worldSidBytes = new byte[worldSid.BinaryLength];
                worldSid.GetBinaryForm(worldSidBytes, 0);

                using (ManagementObject wmiTrustee =
                    new ManagementClass(scope, new ManagementPath("Win32_Trustee"), null).CreateInstance())
                {
                    wmiTrustee["SID"] = worldSidBytes;

                    using (ManagementObject wmiAce =
                        new ManagementClass(scope, new ManagementPath("Win32_ACE"), null).CreateInstance())
                    {
                        wmiAce["AccessMask"] = 0x0200A9; // 0x1F01FF;
                        wmiAce["AceFlags"] = 3;
                        wmiAce["AceType"] = 0;
                        wmiAce["Trustee"] = wmiTrustee;

                        using (ManagementObject secDescriptor =
                            new ManagementClass(scope, new ManagementPath("Win32_SecurityDescriptor"), null).CreateInstance())
                        {
                            secDescriptor["ControlFlags"] = 4;
                            secDescriptor["DACL"] = new ManagementObject[] { wmiAce };

                            using (ManagementBaseObject inParams = wmiShare.GetMethodParameters("Create"))
                            {
                                inParams["Access"] = secDescriptor;
                                inParams["Path"] = localPath;
                                inParams["Name"] = shareName;
                                inParams["Type"] = 0;
                                inParams["Description"] = "ARGUS TV Recordings";

                                using (ManagementBaseObject outParams = wmiShare.InvokeMethod("Create", inParams, null))
                                {
                                    return ((uint)outParams["ReturnValue"] == 0);
                                }
                            }
                        }
                    }
                }
            }
        }