首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#怎么读取共享文件夹

2014-01-12 
C#如何读取共享文件夹请问一下,公司服务器上有个共享文件夹,我在上面专门创建了一个用户cUser,密码123456。

C#如何读取共享文件夹
请问一下,公司服务器上有个共享文件夹,我在上面专门创建了一个用户cUser,密码123456。服务器地址是192.168.1.100,文件夹名称《新建文件夹》,里面有一个excel文件《生产系统.xls》。
我在服务器上设置了该cUser用户对共享文件夹有只读权限。
请问我用c#如何去连接这个共享文件夹里面的excel文件。
读取excel时需要指定路径。请问这个路径应该怎么获取?
非常感谢
[解决办法]
使用这个类来访问网络共享的文件夹

public class IdentityScope : IDisposable  
       {    
        // obtains user token    
        [DllImport("advapi32.dll", SetLastError = true)]    
        static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword,    
            int dwLogonType, int dwLogonProvider, ref IntPtr phToken);    
    
        // closes open handes returned by LogonUser    
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]    
        extern static bool CloseHandle(IntPtr handle);    
    
        [DllImport("Advapi32.DLL")]    
        static extern bool ImpersonateLoggedOnUser(IntPtr hToken);    
    
        [DllImport("Advapi32.DLL")]    
        static extern bool RevertToSelf();    
        const int LOGON32_PROVIDER_DEFAULT = 0;    
        const int LOGON32_LOGON_NEWCREDENTIALS = 9;//域?控?中D的?需è要癮用?:Interactive = 2    
        private bool disposed;    
        public IdentityScope(string sUsername, string sDomain, string sPassword)    
        {    
            // initialize tokens    
            IntPtr pExistingTokenHandle = new IntPtr(0);    
            IntPtr pDuplicateTokenHandle = new IntPtr(0);    
    
            try    
            {    
                // get handle to token    
                bool bImpersonated = LogonUser(sUsername, sDomain, sPassword,    
                    LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle);    
    
                if (true == bImpersonated)    
                {    
                    if (!ImpersonateLoggedOnUser(pExistingTokenHandle))    
                    {    
                        int nErrorCode = Marshal.GetLastWin32Error();    
                        throw new Exception("ImpersonateLoggedOnUser error;Code=" + nErrorCode);    


                    }    
                }    
                else    
                {    
                    int nErrorCode = Marshal.GetLastWin32Error();    
                    throw new Exception("LogonUser error;Code=" + nErrorCode);    
                }    
            }    
            finally    
            {    
                // close handle(s)    
                if (pExistingTokenHandle != IntPtr.Zero)    
                    CloseHandle(pExistingTokenHandle);    
                if (pDuplicateTokenHandle != IntPtr.Zero)    
                    CloseHandle(pDuplicateTokenHandle);    
            }    
        }    
    
        protected virtual void Dispose(bool disposing)    
        {    
            if (!disposed)    
            {    
                RevertToSelf();    
                disposed = true;    
            }    
        }    
    
        public void Dispose()    
        {    
            Dispose(true);    
        }    
    }   



用法参考这段 DirectoryInfo Dir  你改成定义你的EXCLE路径就可以了。

 using (IdentityScope iss = new IdentityScope(username, hostIp, password))
                {
                    DirectoryInfo Dir = new DirectoryInfo(@"\\\" + hostIp + "\" + dirname);
}

[解决办法]
  
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine("net use  \\\" + IP + "\\ipc$ " + pwd + " /user:" + useName + "");
Thread.Sleep(1000);

热点排行