Exemple #1
0
        // Token: 0x06002334 RID: 9012 RVA: 0x000A4E90 File Offset: 0x000A3090
        internal static SHARE_INFO_503[] GetScopedShareInfo(string serverName, string shareName)
        {
            NetShare.SERVER_TRANSPORT_INFO2[] serverTransports = NetShare.GetServerTransports(serverName);
            if (serverTransports != null)
            {
                Dictionary <string, SHARE_INFO_503> dictionary = new Dictionary <string, SHARE_INFO_503>(3);
                foreach (NetShare.SERVER_TRANSPORT_INFO2 server_TRANSPORT_INFO in serverTransports)
                {
                    if ((server_TRANSPORT_INFO.Flags & 4U) != 0U)
                    {
                        SHARE_INFO_503[] array2;
                        uint             num = NetShare.EnumScopedShares(server_TRANSPORT_INFO.Networkaddress, out array2);
                        if (num != 0U)
                        {
                            ExTraceGlobals.NetShareTracer.TraceError <uint, string>(0L, "EnumScopedShares() error status: {0} for {1}", num, server_TRANSPORT_INFO.Networkaddress);
                            throw new Win32Exception((int)num);
                        }
                        foreach (SHARE_INFO_503 value in array2)
                        {
                            if (Cluster.StringIEquals(value.Netname, shareName))
                            {
                                dictionary[value.Servername] = value;
                            }
                        }
                    }
                }
                if (dictionary.Count != 0)
                {
                    Dictionary <string, SHARE_INFO_503> .ValueCollection values = dictionary.Values;
                    SHARE_INFO_503[] array4 = new SHARE_INFO_503[values.Count];
                    values.CopyTo(array4, 0);
                    return(array4);
                }
            }
            string path;
            string remark;
            uint   type;
            int    permissions;
            int    max_uses;

            NetShare.GetShareInfo(serverName, shareName, out path, out remark, out type, out permissions, out max_uses);
            return(new SHARE_INFO_503[]
            {
                new SHARE_INFO_503
                {
                    Netname = shareName,
                    Type = type,
                    Remark = remark,
                    Permissions = permissions,
                    Max_uses = max_uses,
                    Current_uses = 0,
                    Path = path,
                    Passwd = null,
                    Servername = "*",
                    Reserved = 0,
                    Security_descriptor = IntPtr.Zero
                }
            });
        }
Exemple #2
0
        // Token: 0x0600232F RID: 9007 RVA: 0x000A497C File Offset: 0x000A2B7C
        public static void DeleteShare(string serverName, string shareName)
        {
            uint num = 0U;

            NetShare.SERVER_TRANSPORT_INFO2[] serverTransports = NetShare.GetServerTransports(serverName);
            uint num2 = NetShare.NetShareDel(serverName, shareName, 0);

            if (num2 == 0U)
            {
                num += 1U;
            }
            else if (num2 != 2310U)
            {
                ExTraceGlobals.NetShareTracer.TraceError(0L, "NetShareDel error status: {0} for {1} {2} ({3} shares deleted)", new object[]
                {
                    num2,
                    serverName ?? "<null>",
                    shareName,
                    num
                });
                throw new Win32Exception((int)num2);
            }
            if (serverTransports != null)
            {
                foreach (NetShare.SERVER_TRANSPORT_INFO2 server_TRANSPORT_INFO in serverTransports)
                {
                    if ((server_TRANSPORT_INFO.Flags & 4U) != 0U)
                    {
                        uint num3;
                        num2 = NetShare.DeleteShareOnNetworkTransport(server_TRANSPORT_INFO.Networkaddress, shareName, out num3);
                        if (num2 == 0U)
                        {
                            num += num3;
                        }
                        else if (num2 != 2310U)
                        {
                            ExTraceGlobals.NetShareTracer.TraceError(0L, "NetShareDel error status: {0} for scope={1} server={2} share={3} ({4} shares deleted)", new object[]
                            {
                                num2,
                                server_TRANSPORT_INFO.Networkaddress,
                                serverName ?? "<null>",
                                shareName,
                                num
                            });
                            throw new Win32Exception((int)num2);
                        }
                    }
                }
            }
            if (num2 == 0U)
            {
                ExTraceGlobals.NetShareTracer.TraceDebug(0L, "DeleteShare success status: {0} for {1} {2} ({3} shares deleted)", new object[]
                {
                    num2,
                    serverName ?? "<null>",
                    shareName,
                    num
                });
                ExTraceGlobals.PFDTracer.TracePfd(0L, "PFD CRS {0} DeleteShare success status: {1} for {2} {3} ({4} shares deleted)", new object[]
                {
                    22491,
                    num2,
                    serverName ?? "<null>",
                    shareName,
                    num
                });
            }
        }