Как я могу подключиться к удаленному компьютеру, находящемуся под VPNC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу подключиться к удаленному компьютеру, находящемуся под VPN

Сообщение Anonymous »

У меня есть удаленный компьютер, к которому я пытаюсь подключиться с помощью кода C# следующим образом
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using System.Threading.Tasks;

namespace DeployCode
{
public static class NetworkManager
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NETRESOURCE
{
public ResourceScope dwScope;
public ResourceType dwType;
public ResourceDisplayType dwDisplayType;
public ResourceUsage dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}

public enum ResourceScope : int { GlobalNetwork, Connected, Remembered, Recent, Context }
public enum ResourceType : int { Any, Disk, Print, Reserved }
public enum ResourceDisplayType : int { Generic, Domain, Server, Share, File, Group }
public enum ResourceUsage : int { Connectable = 1, Container = 2, NoLocalDevice = 4, Sibling = 8, Attached = 16 }

[DllImport("mpr.dll")]
public static extern int WNetAddConnection2(ref NETRESOURCE lpNetResource, string lpPassword, string lpUsername, int dwFlags);

[DllImport("mpr.dll")]
public static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce);

///
/// Pings a server asynchronously to check its reachability.
///
///
The server to ping.
/// Returns true if the server is reachable, otherwise false.
public static async Task PingServerAsync(string server)
{
try
{
Ping ping = new Ping();
PingReply reply = await ping.SendPingAsync(server);
return reply.Status == IPStatus.Success;
}
catch
{
return false; // If an exception occurs, consider the ping as failed
}
}

///
/// Connects to a network share using the given path, username, and password.
///
/// The network share path (e.g., \\server\share).
/// The username to authenticate with.
/// The password for the user.
public static void ConnectToNetworkShare(string remotePath, string username, string password)
{
NETRESOURCE networkResource = new NETRESOURCE
{
dwScope = ResourceScope.GlobalNetwork,
dwType = ResourceType.Disk,
dwDisplayType = ResourceDisplayType.Share,
dwUsage = ResourceUsage.Connectable,
lpRemoteName = remotePath
};

int result = WNetAddConnection2(ref networkResource, password, username, 0);

if (result != 0)
{
throw new System.ComponentModel.Win32Exception(result, $"Failed to connect to network share: {remotePath}");
}
}

///
/// Disconnects from a network share.
///
/// The path to disconnect from.
public static void DisconnectFromNetworkShare(string remotePath)
{
int result = WNetCancelConnection2(remotePath, 0, true);
if (result != 0 && result != 2250) // 2250 means "no network connection"
{
throw new System.ComponentModel.Win32Exception(result, $"Failed to disconnect from network share: {remotePath}");
}
}
}
}

Когда я вручную подключаюсь со своего компьютера, после запуска кода он работает как положено. Но где, как когда я пытаюсь подключиться из кода, используя это
var username = $"{server}\\administrator";
var password = "mypassword";
var destinationFolder = $@"\\{server}\E$\Application";
NetworkManager.ConnectToNetworkShare(destinationFolder, username, password);


Подробнее здесь: https://stackoverflow.com/questions/791 ... -under-vpn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»