Click here to Skip to main content
15,891,431 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
C#
string ff = @"C:\IpAdd\ipadd.txt";
            string line;
            StreamReader file = new StreamReader(ff);
            while ((line = file.ReadLine()) != null)
            {
                try
                {
                    NetworkCredential _readCredentail = new NetworkCredential(userName:"**", password:"**");
                    using (new NetworkConnection(line + @"\c", _readCredentail))
                    {
                        string path = line + @"\c\" + @"ProgramData\Microsoft\Windows\Start Menu\Programs\Startup";
                        File.Copy(path, @"\\192.168.*.**\fbar\TOOLS\ProbingApps\ProbingSystem\DesktopCopyTemp\EI_Startup.bat", true);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();   
                }     
            }
        }

        public class NetworkConnection : IDisposable
        {
            string _networkName;

            public NetworkConnection(string networkName,
            NetworkCredential credentials)
            {
                _networkName = networkName;

                var netResource = new NetResource()
                {
                    Scope = ResourceScope.GlobalNetwork,
                    ResourceType = ResourceType.Disk,
                    DisplayType = ResourceDisplaytype.Share,
                    RemoteName = networkName
                };
                var userName = string.IsNullOrEmpty(credentials.Domain)
                    ? credentials.UserName
                    : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);

                var result = WNetAddConnection2(
                    netResource,
                    credentials.Password,
                    userName,
                    0);
                if (result != 0)
                {
                   // throw new Win32Exception(result, "Error connecting to remote share");
                }
            }
            ~NetworkConnection()
            {
                Dispose(false);
            }

            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }

            protected virtual void Dispose(bool disposing)
            {
                WNetCancelConnection2(_networkName, 0, true);
            }

            [DllImport("mpr.dll")] private static extern int WNetAddConnection2(NetResource netResource,string password, string username, int flags);

            [DllImport("mpr.dll")] private static extern int WNetCancelConnection2(string name, int flags, bool force);
        }

        [StructLayout(LayoutKind.Sequential)]
        public class NetResource
        {
            public ResourceScope Scope;
            public ResourceType ResourceType;
            public ResourceDisplaytype DisplayType;
            public int Usage;
            public string LocalName;
            public string RemoteName;
            public string Comment;
            public string Provider;
        }

        public enum ResourceScope : int
        {
            Connected = 1,
            GlobalNetwork,
            Remembered,
            Recent,
            Context
        };

        public enum ResourceType : int
        {
            Any = 0,
            Disk = 1,
            Print = 2,
            Reserved = 8,
        }

        public enum ResourceDisplaytype : int
        {
            Generic = 0x0,
            Domain = 0x01,
            Server = 0x02,
            Share = 0x03,
            File = 0x04,
            Group = 0x05,
            Network = 0x06,
            Root = 0x07,
            Shareadmin = 0x08,
            Directory = 0x09,
            Tree = 0x0a,
            Ndscontainer = 0x0b
        }
    }


What I have tried:

What is the wrong with the code, I'm get access denied.
Posted
Updated 27-Jun-16 20:50pm
Comments
[no name] 28-Jun-16 2:47am    
Another alternative, use the command "NET USE" from command prompt. Run it using Process.Start, this is the description : http://www.howtogeek.com/118452/how-to-map-network-drives-from-the-command-prompt-in-windows/
Nigol_Learner 28-Jun-16 3:14am    
I know bro, just I want it to done in C#.
Garth J Lancaster 28-Jun-16 3:41am    
I presume you've masked this "\\192.168.*.**\fbar\... purely for display purposes here on CP .. ? have you tested the credentials ? the gent who suggested 'NET USE' was correct in a way - easier to test with NET USE first then translate to code

I've never seen this

var netResource = new NetResource()
{
Scope = ResourceScope.GlobalNetwork,
ResourceType = ResourceType.Disk,
DisplayType = ResourceDisplaytype.Share,
RemoteName = networkName
};

used - Ive done very similar to map a drive, so I'll be having a look at this technique
Garth J Lancaster 28-Jun-16 3:57am    
is 'fbar' in this "\\192.168.*.**\fbar\ set as a share on the remote/server ?
Nigol_Learner 28-Jun-16 21:11pm    
Using "net use" to copy just fine, and yes it is "fbar" share folder. I have use this "public class NetworkConnection" to my other project like counts the content of folder in client pc on specific directory, it's just working fine, but now I'm use for coping file from my server fbar to my client pc, I get access denied to access to my client pc.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900