C#客户端使用LogonUser访问服务器上的共享文件,提示用户名或密码错误(客户端与服务器在同一域中)
 private static bool IfUpdate()
        {
            bool bRtn = true;
            try
            {
                string AppDataPath = System.Windows.Forms.Application.StartupPath;//程序根目录
                //从服务器copy文件
                //System.IO.File.Copy(@"\\dev-server\D\csv.csv", @"D:\TEST.txt", true);

                IntPtr admin_token = default(IntPtr);
                WindowsIdentity wid_admin = null;
                WindowsImpersonationContext wic = null;

                string struser = global::InventoryApplication.Properties.Settings.Default.User;//用户名
                string strpwd = global::InventoryApplication.Properties.Settings.Default.Pwd;//密码
                string strIP = global::InventoryApplication.Properties.Settings.Default.URL; //服务器IP
                string strurl = global::InventoryApplication.Properties.Settings.Default.Route;//共享目录路径

                //在程序中模拟域帐户登录  
                if (LogonUser(struser, strIP, strpwd, 9, 0, ref admin_token) != 0)
                {
                    using (wid_admin = new WindowsIdentity(admin_token))
                    {
                        using (wic = wid_admin.Impersonate())
                        {
                            //假定要操作的文件路径是  
                            FileInfo file = new FileInfo(@"\\" + strIP + "\\" + strurl + "\\" + COMMON.ClsCommon.strUpdatetxt + "");

                            string strFILE = AppDataPath + COMMON.ClsCommon.strUpdatetxt + "";
                            if (File.Exists(strFILE))
                            {
                                File.Delete(strFILE);
                            }

                            //copy版本号
                            file.CopyTo(AppDataPath + COMMON.ClsCommon.strUpdatetxt + "");

                        }
                    }
                }
                else
                {
                    COMMON.ClsCommon.ErrorMassage("连接失败");
                }
            }
            catch (Exception ee)
            {
                COMMON.ClsCommon.ErrorMassage(ee.Message);
                bRtn = false;
            }
            return bRtn;
        }

        [DllImport("advapi32.DLL", SetLastError = true)]
        public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
weixin_43902841
weixin_43902841 已解决,服务器上将共享的文件夹赋予administrator用户。
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问