C#模拟windows账户登录,并复制文件代码
2015-12-07 11:11
661 查看
使用C#模拟windows账户或者windows域账户登录,需要使用advapi32.dll中的LogonUser()函数。 通过模拟登录之后程序就具有了模拟对象对服务器操作的任何权限,可以这么说只要是该用户可以做的事情在程序中就可以做了。
下面的例子中登录后模拟了复制文件操作。通过这种模拟登录 的方法可以实现asp.net程序的自动化部署。
下面的例子中登录后模拟了复制文件操作。通过这种模拟登录 的方法可以实现asp.net程序的自动化部署。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Principal; using System.Runtime.InteropServices; using System.IO; namespace ConsoleApplication3 { internal static class WinLogonHelper { /// <summary> /// 模拟windows登录域 /// </summary> [DllImport("advapi32.DLL", SetLastError = true)] public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); } class Program { static void Main(string[] args) { IntPtr admin_token = default(IntPtr); WindowsIdentity wid_admin = null; WindowsImpersonationContext wic = null; //在程序中模拟域帐户登录 if (WinLogonHelper.LogonUser("uid", "serverdomain", "pwd", 9, 0, ref admin_token) != 0) { using (wid_admin = new WindowsIdentity(admin_token)) { using (wic = wid_admin.Impersonate()) { //假定要操作的文件路径是10.0.250.11上的d:\txt.txt文件可以这样操作 FileInfo file = new FileInfo(@"\\10.0.250.11\d$\txt.txt"); //想做什么操作就可以做了 } } } } } }
相关文章推荐
- c#之时间戳与DateTime的相互转换
- c#读取excel的xls和xlsx文件的方法
- C#.net 数据操作--excel 操作类
- C#中的扩展方法学习总结
- C# AOP框架入门
- 基于C#实现的高斯正反算公式实现的国家大地2000坐标转换功能
- pp看书笔记---C#高级编程第九版 第四章 【继承】
- c#面向对象
- C#中数组、ArrayList和List三者的区别
- C#——字符串总结
- 【C#基础】基础总结
- 初识C#
- 【C#学习】——方法(函数)
- C#之构造函数
- C#小结(二)
- C#篇-面向对象之继承
- C#之初识
- 基于C#语言的RabbitMq数据传输机制的数据接收
- c#从控制台输入年月,控制台输出当月日历。
- C#正则表达式Regex类的常用匹配