Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Аналоги WNetAddConnection2 в C#


Автор: teRmit 26.6.2006, 15:45
Какие аналоги существуют в C# сишному методу WNetAddConnection2?
Или как можно сделать то же самое действие, но другими способами?
Мне нужно просто подключиться к удаленному компьютеру. 

Автор: mr.DUDA 26.6.2006, 16:56
http://www.pinvoke.net/default.aspx/mpr/WNetAddConnection2.html 

Автор: teRmit 26.6.2006, 17:17
Пробовал, заставить работать не смог... 

Автор: teRmit 27.6.2006, 10:18
В общем, делаю так:
Код

[StructLayout(LayoutKind.Sequential)]
    public class NETRESOURCE
    {    
        public int dwScope;    
        public int dwType;
        public int dwDisplayType;    
        public int dwUsage;    
        public string LocalName;    
        public string RemoteName;    
        public string Comment;    
        public string Provider;
    }
...
[DllImport("mpr.dll")] 
        static extern int WNetAddConnection2( NETRESOURCE netResource,
            string password, string username, int flags);

NETRESOURCE rc = new NETRESOURCE();
rc.dwType = 0x00000000;
rc.RemoteName = @"\\hostname";
rc.Provider = null;
int ret = WNetAddConnection2(rc, "pass", "username", 0);


либо так:

Код

[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{    
    public int dwScope;    
    public int dwType;
    public int dwDisplayType;    
    public int dwUsage;    
    public string LocalName;    
    public string RemoteName;    
    public string Comment;    
    public string Provider;
}
...
[DllImport("mpr.dll")] 
        static extern int WNetAddConnection2(ref NETRESOURCE netResource,
            string password, string username, int flags);

NETRESOURCE rc = new NETRESOURCE();
rc.dwType = 0x00000000;
rc.RemoteName = @"\\hostname";
rc.Provider = null;
int ret = WNetAddConnection2(ref rc, "pass", "username", 0);


Все время возвращает ошибку, либо 67 (The network name cannot be found), либо 1200 (The specified device name is invalid). Хотя в С++ все работает...

Что я делаю не так? Ткните носом пжалста! smile 

Автор: teRmit 27.6.2006, 14:47
Вопрос снят. Всем спасибо. smile 

Автор: arilou 27.6.2006, 17:43
teRmit, а поделиться ответом? 

Автор: teRmit 28.6.2006, 09:38
Код

using System;
using System.Runtime.InteropServices;
...
[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{    
    public int dwScope;    
    public int dwType;
    public int dwDisplayType;    
    public int dwUsage;    
    public string LocalName;    
    public string RemoteName;    
    public string Comment;    
    public string Provider;
}

[DllImport("mpr.dll", SetLastError=true)] 
static extern int WNetAddConnection2(ref NETRESOURCE netResource,
                         string password, string username, int flags);
...
private void ImpersonateUser(string machine)
{
    NETRESOURCE rc = new NETRESOURCE();
    rc.dwType = 0x00000000;
    rc.RemoteName = @"\\" + machine + @"\IPC$";
    rc.LocalName = null;
    rc.Provider = null;
    int ret = WNetAddConnection2(ref rc, m_password, m_username, 0);
    ...
}


И быть внимательным к кредам для доступа к машине smile 

Автор: Cold_Almaty 23.1.2008, 12:20
Как добывить вызов этой функции в обработчик кнопки?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)