Здравствуйте, 16alex, Вы писали:
1>Здравствуйте, 16alex, Вы писали:
1>>Каким образом можно получить доступ к папке(для подсчета количества файлов). Если папке находиться по следующему адресу: \\vpn-ip-ник\D$\folder\
1>>Данный код позволяет получить количество файлов но только после того как я пройдусь по всем ip-никам и введу пароль и логин локального админа.
Как получить доступ к сетевой папке — попробуйте вот так:
m_remotePath = @"\\vpn-ip-ник\D$\folder"; // еще можно попробовать folder отрезать
WNetWrapper.NETRESOURCEW resource = new WNetWrapper.NETRESOURCEW();
resource.dwType = WNetWrapper.RESOURCETYPE_DISK;
resource.lpLocalName = null;
resource.lpRemoteName = m_remotePath;
resource.lpProvider = null;
uint res = WNetWrapper.WNetAddConnection2W(ref resource,
YOUR_Password,
YOUR_UserName,
0);
if (res != 0)
throw new Win32Exception((int) res);
где враппер такой:
internal static class WNetWrapper
{
/// RESOURCETYPE_DISK -> 0x00000001
public const int RESOURCETYPE_DISK = 1;
/// Return Type: DWORD->unsigned int
///lpNetResource: LPNETRESOURCEW->_NETRESOURCEW*
///lpPassword: LPCWSTR->WCHAR*
///lpUserName: LPCWSTR->WCHAR*
///dwFlags: DWORD->unsigned int
[DllImport("mpr.dll", EntryPoint = "WNetAddConnection2W")]
public static extern uint WNetAddConnection2W(ref NETRESOURCEW lpNetResource,
[In] [MarshalAs(UnmanagedType.LPWStr)] string lpPassword,
[In] [MarshalAs(UnmanagedType.LPWStr)] string lpUserName,
uint dwFlags);
/// Return Type: DWORD->unsigned int
///lpName: LPCWSTR->WCHAR*
///dwFlags: DWORD->unsigned int
///fForce: BOOL->int
[DllImport("mpr.dll", EntryPoint = "WNetCancelConnection2W")]
public static extern uint WNetCancelConnection2W([In] [MarshalAs(UnmanagedType.LPWStr)] string lpName,
uint dwFlags, [MarshalAs(UnmanagedType.Bool)] bool fForce);
#region Nested type: NETRESOURCEW
[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCEW
{
/// DWORD->unsigned int
public uint dwScope;
/// DWORD->unsigned int
public uint dwType;
/// DWORD->unsigned int
public uint dwDisplayType;
/// DWORD->unsigned int
public uint dwUsage;
/// LPWSTR->WCHAR*
[MarshalAs(UnmanagedType.LPWStr)]
public string lpLocalName;
/// LPWSTR->WCHAR*
[MarshalAs(UnmanagedType.LPWStr)]
public string lpRemoteName;
/// LPWSTR->WCHAR*
[MarshalAs(UnmanagedType.LPWStr)]
public string lpComment;
/// LPWSTR->WCHAR*
[MarshalAs(UnmanagedType.LPWStr)]
public string lpProvider;
}
#endregion
}
Алексей.
1>>1>>listBox2.Items.Clear();
1>> for (int i = 0; i < listBox1.Items.Count; i++)
1>> {
1>> string path = Properties.Settings.Default.path[i];
1>> try
1>> {
1>> DirectoryInfo currDirectory = new DirectoryInfo(path);
1>> if (currDirectory.Exists)
1>> {
1>> FileInfo[] a = currDirectory.GetFiles();
1>> listBox2.Items.Add(listBox1.Items[i].ToString() + "-" + a.Length.ToString());
1>> // MessageBox.Show(currDirectory.FullName);
1>> }
1>> else
1>> {
1>> listBox2.Items.Add(listBox1.Items[i].ToString() + "-" + "Директории не существует");
1>> }
1>> //template-----------------------------------------------
1>> }
1>> catch
1>> {
1>> listBox2.Items.Add(listBox1.Items[i].ToString() + "-" + "Нет доступа");
1>> }
1>> }
1>> MessageBox.Show("Проверка завершена,поздравляем");
1>>
1>>Как автоматизировать этот процесс? Вроде бы есть NetworkCredential. Но как его юзать в данном случае я никак себе не представляю