SORU
17 Kasım 2008, PAZARTESİ


Nasıl bir ağ paylaşımına bağlanırken kullanıcı adı ve parola sağlamanız

Geçerli kullanıcı (benim durumumda, bir ağ hizmeti kullanıcı etkin) haklarına sahip bir ağ paylaşımına bağlanırken, adı ve şifre sağlanacak.

Win32 fonksiyonları (mpr.dll WNet* ailesi) ile bunu nasıl biliyorum, ama bunu yapmak istiyorum .Net (2.0) işlevi.

Seçeneklerin ne?

Belki biraz daha fazla bilgi yardımcı olur

  • Kullanım örneği windows servis, ASP.NET bir uygulama değil.
  • Hizmet paylaşımında hiçbir hakları olan bir hesap altında çalışıyor.
  • Kullanıcı hesabı paylaşmak için gerekli istemci tarafında bilinmemektedir.
  • İstemci ve sunucu aynı etki alanının üyesi değil.

CEVAP
29 Temmuz 2009, ÇARŞAMBA


Mark Brackett'kendi benim hızlı uygulama yaptım o kadar çok s cevap. ben sevdim Burada başkasının acele gerekir:

public class NetworkConnection : IDisposable
{
    string _networkName;

    public NetworkConnection(string networkName, 
        NetworkCredential credentials)
    {
        _networkName = networkName;

        var netResource = new NetResource()
        {
            Scope = ResourceScope.GlobalNetwork,
            ResourceType = ResourceType.Disk,
            DisplayType = ResourceDisplaytype.Share,
            RemoteName = networkName
        };

        var userName = string.IsNullOrEmpty(credentials.Domain)
            ? credentials.UserName
            : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);

        var result = WNetAddConnection2(
            netResource, 
            credentials.Password,
            userName,
            0);

        if (result != 0)
        {
            throw new Win32Exception(result, "Error connecting to remote share");
        }   
    }

    ~NetworkConnection()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        WNetCancelConnection2(_networkName, 0, true);
    }

    [DllImport("mpr.dll")]
    private static extern int WNetAddConnection2(NetResource netResource, 
        string password, string username, int flags);

    [DllImport("mpr.dll")]
    private static extern int WNetCancelConnection2(string name, int flags,
        bool force);
}

[StructLayout(LayoutKind.Sequential)]
public class NetResource
{
    public ResourceScope Scope;
    public ResourceType ResourceType;
    public ResourceDisplaytype DisplayType;
    public int Usage;
    public string LocalName;
    public string RemoteName;
    public string Comment;
    public string Provider;
}

public enum ResourceScope : int
{
    Connected = 1,
    GlobalNetwork,
    Remembered,
    Recent,
    Context
};

public enum ResourceType : int
{
    Any = 0,
    Disk = 1,
    Print = 2,
    Reserved = 8,
}

public enum ResourceDisplaytype : int
{
    Generic = 0x0,
    Domain = 0x01,
    Server = 0x02,
    Share = 0x03,
    File = 0x04,
    Group = 0x05,
    Network = 0x06,
    Root = 0x07,
    Shareadmin = 0x08,
    Directory = 0x09,
    Tree = 0x0a,
    Ndscontainer = 0x0b
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kanaal van Dj0fifty

    Kanaal van D

    28 EKİM 2011
  • Samvith V Rao

    Samvith V Ra

    20 EKİM 2006
  • soyacincautv

    soyacincautv

    14 NİSAN 2010