| using System; |
| using System.IO; |
| using System.Runtime.InteropServices; |
| using System.Security.Principal; |
| namespace LogonUser |
| { |
| class Class1 |
| { |
| private const int LOGON32_LOGON_INTERACTIVE = 2; |
| private const int LOGON32_LOGON_NETWORK_CLEARTEXT = 3; |
| private const int LOGON32_PROVIDER_DEFAULT = 0; |
| [DllImport("advapi32.dll", CharSet = CharSet.Auto)] |
| static extern int LogonUser(string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); |
| [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] |
| static extern int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken); |
| [STAThread] |
| static void Main(string[] args) |
| { |
| string UserName = "логин к папке"; |
| string Password = "пароль как папке"; |
| // Для сохранения текущей имперсонации |
| WindowsImpersonationContext impersonationContext = null; |
| try |
| { |
| // Имперсонируем другого пользователя |
| WindowsIdentity newIdentity; |
| IntPtr token = IntPtr.Zero; |
| IntPtr tokenDuplicate = IntPtr.Zero; |
| if (LogonUser(UserName, Environment.MachineName, Password, |
| LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, ref token) != 0) |
| { |
| if (DuplicateToken(token, 2, ref tokenDuplicate) != 0) |
| { |
| newIdentity = new WindowsIdentity(tokenDuplicate); |
| // При имперсонации возвращается текущее значение |
| impersonationContext = newIdentity.Impersonate(); |
| } |
| } |
| } |
| catch (Exception Ex) |
| { |
| Console.WriteLine("Ошибка имперсонации пользователя {0}: {1}", UserName, Ex); |
| } |
| // Новая имперсонация |
| WindowsIdentity wi1 = WindowsIdentity.GetCurrent(); |
| Console.WriteLine("Name={0} --> {1}", wi1.Name, wi1.IsAuthenticated); |
| // Действие |
| string[] files = Directory.GetFiles(@"\\10.0.0.71\install\"); |
| Console.WriteLine("--- Files: ---"); |
| foreach (string name in files) |
| { |
| Console.WriteLine(name); |
| } |
| // Возвращаем предыдущую имперсонацию |
| if (impersonationContext != null) |
| impersonationContext.Undo(); |
| Console.ReadKey(true); |
| } |
| } |
| }, |
среда, 1 июля 2015 г.
C# доступ к сетвой папке по имени пользователя и паролю
Подписаться на:
Комментарии к сообщению (Atom)
Nginx + Let's Crypt
Шаг 1. Установка Certbot # apt-get install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing...
-
По памяти: После установки Debian 12 Шаг 1. Обновляем систему с применением обновлений: #> apt-get update && apt-get upgrade -y ...
-
Дистрибутив (файл OracleXE112_Win32.zip) можно взять на официальном сайте корпорации Oracle (требуется регистрация): http://www.orac...
-
using System; using System.IO; using System.Runtime.InteropServices; using System.Security.Principal; namespace LogonUser { ...
Комментариев нет:
Отправить комментарий