C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C# VS2010 でのネットワークドライブの作成


(過去ログ 102 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■61170 / inTopicNo.1)  C# VS2010 でのネットワークドライブの作成
  
□投稿者/ C#man (1回)-(2011/08/04(Thu) 14:20:02)

分類:[C#] 

VS2010 C# でネットワークドライブを作成したいのですが難しいでしょうか?

ネット上でWNerAddConnectionとか使ってるのがあるんですが、いまいちよくわかりません。。。

簡単なサンプル文教えていただけると助かります。

例)
Z:にネットワークドライブを作成できるもの。
引用返信 編集キー/
■61176 / inTopicNo.2)  Re[1]: C# VS2010 でのネットワークドライブの作成
□投稿者/ shu (910回)-(2011/08/04(Thu) 14:56:43)
No61170 (C#man さん) に返信
> VS2010 C# でネットワークドライブを作成したいのですが難しいでしょうか?
>
> ネット上でWNerAddConnectionとか使ってるのがあるんですが、いまいちよくわかりません。。。
>
> 簡単なサンプル文教えていただけると助かります。
>
> 例)
> Z:にネットワークドライブを作成できるもの。

net コマンドで
ユーザー付き
net use Z: "\\server\sharefolder" password /user:username /persistent:[yes/no]

ユーザー無し
net use Z: "\\server\sharefolder" /persistent:[yes/no]


引用返信 編集キー/
■61180 / inTopicNo.3)  Re[2]: C# VS2010 でのネットワークドライブの作成
□投稿者/ C#man (2回)-(2011/08/04(Thu) 15:26:38)
shuさんありがとうございます。

CMD のnet useではなくて・・・C#ぷろぐらむで作成したいです。
あるPCでbatファイルではなく、ネットワーク接続するまでループ処理をおこなうプログラムが必要だからです。

WNerAddConnectionとか使用して実現したいです。
よろしくお願いいたします。
引用返信 編集キー/
■61181 / inTopicNo.4)  Re[3]: C# VS2010 でのネットワークドライブの作成
□投稿者/ shu (911回)-(2011/08/04(Thu) 15:50:56)
No61180 (C#man さん) に返信
> shuさんありがとうございます。
>
> CMD のnet useではなくて・・・C#ぷろぐらむで作成したいです。
> あるPCでbatファイルではなく、ネットワーク接続するまでループ処理をおこなうプログラムが必要だからです。
>
> WNerAddConnectionとか使用して実現したいです。
> よろしくお願いいたします。

batでもプロセス起動してErrorを見れば繰り返し処理が可能なんですが。


WNetAddConnectionで検索
すべては時の中に・・のサイトです。
http://blog.livedoor.jp/akf0/archives/51451199.html

こんなとこもありました。
http://www.ujasiri.com/prglib/vc/net/vc_WNetConnection.html
引用返信 編集キー/
■61187 / inTopicNo.5)  Re[1]: C# VS2010 でのネットワークドライブの作成
□投稿者/ Azulean (809回)-(2011/08/04(Thu) 22:46:19)
No61170 (C#man さん) に返信
> ネット上でWNerAddConnectionとか使ってるのがあるんですが、いまいちよくわかりません。。。

どういったサンプルをみて、どの部分がわからなかったのかを明確にしましょう。
自分が使うためのコードを書いてもらうことは今の問題を解決できるかもしれませんが、自分の質問の仕方の向上や調査力の向上の機会を減らしてしまうかもしれません。
どの部分がどのようにわからなかったのか説明すれば、その部分についてピンポイントでアドバイスをもらえるかもしれません。

# どういったことを調べたかを提示・共有することで、丸投げしていないという意味で心証がよくなるかもしれません。
引用返信 編集キー/
■61215 / inTopicNo.6)  Re[2]: C# VS2010 でのネットワークドライブの作成
□投稿者/ C#man (3回)-(2011/08/05(Fri) 15:52:50)
Azulean さん書き込みありがとうございました。
shuさんの資料より、いろいろネットで調べて無事ネットワークドライブを無事作成することができました。

そこで気になった所があるので再度質問させてください。

Q1.ResourceScope(ResourceType、ResourceUsage、ResourceDisplayType)を宣言している箇所がありますが以下の各プロパティ(項目)は記述する必要があるのか?
また何を意味しているのか?(ネットでしらべましたがよく理解できませんでした;教えていただけると助かります。)

RESOURCE_CONNECTED = 1,
RESOURCE_GLOBALNET,
RESOURCE_REMEMBERED,
RESOURCE_RECENT,
RESOURCE_CONTEXT


↓以下はネットワークドライブ作成ソース


using System.Runtime.InteropServices;

namespace Utilities.Network
{
public class NetworkDrive
{
public enum ResourceScope
{
RESOURCE_CONNECTED = 1,
RESOURCE_GLOBALNET,
RESOURCE_REMEMBERED,
RESOURCE_RECENT,
RESOURCE_CONTEXT
}

public enum ResourceType
{
RESOURCETYPE_ANY,
RESOURCETYPE_DISK,
RESOURCETYPE_PRINT,
RESOURCETYPE_RESERVED
}

public enum ResourceUsage
{
RESOURCEUSAGE_CONNECTABLE = 0x00000001,
RESOURCEUSAGE_CONTAINER = 0x00000002,
RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004,
RESOURCEUSAGE_SIBLING = 0x00000008,
RESOURCEUSAGE_ATTACHED = 0x00000010,
RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED),
}

public enum ResourceDisplayType
{
RESOURCEDISPLAYTYPE_GENERIC,
RESOURCEDISPLAYTYPE_DOMAIN,
RESOURCEDISPLAYTYPE_SERVER,
RESOURCEDISPLAYTYPE_SHARE,
RESOURCEDISPLAYTYPE_FILE,
RESOURCEDISPLAYTYPE_GROUP,
RESOURCEDISPLAYTYPE_NETWORK,
RESOURCEDISPLAYTYPE_ROOT,
RESOURCEDISPLAYTYPE_SHAREADMIN,
RESOURCEDISPLAYTYPE_DIRECTORY,
RESOURCEDISPLAYTYPE_TREE,
RESOURCEDISPLAYTYPE_NDSCONTAINER
}

[StructLayout(LayoutKind.Sequential)]
private class NETRESOURCE
{
public ResourceScope dwScope = 0;
public ResourceType dwType = 0;
public ResourceDisplayType dwDisplayType = 0;
public ResourceUsage dwUsage = 0;
public string lpLocalName = null;
public string lpRemoteName = null;
public string lpComment = null;
public string lpProvider = null;
}

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

public int MapNetworkDrive(string unc, string drive, string user, string password)
{
NETRESOURCE myNetResource = new NETRESOURCE();
myNetResource.lpLocalName = drive;
myNetResource.lpRemoteName = unc;
myNetResource.lpProvider = null;
int result = WNetAddConnection2(myNetResource, password, user, 0);
return result;
}
}
}

引用返信 編集キー/
■61221 / inTopicNo.7)  Re[3]: C# VS2010 でのネットワークドライブの作成
□投稿者/ Azulean (810回)-(2011/08/06(Sat) 00:04:14)
No61215 (C#man さん) に返信
> Q1.ResourceScope(ResourceType、ResourceUsage、ResourceDisplayType)を宣言している箇所がありますが以下の各プロパティ(項目)は記述する必要があるのか?
> また何を意味しているのか?(ネットでしらべましたがよく理解できませんでした;教えていただけると助かります。)

http://msdn.microsoft.com/en-us/library/aa385413.aspx
http://msdn.microsoft.com/en-us/library/aa385353.aspx

WNetAddConnection2 関数自体がそもそも、このように構造体を必要としています。
ご質問の宣言を削るのであれば、よくわからないマジックナンバー(定数)を使うことになり、可読性を落とします。
# 単純に削るだけだとコンパイルエラーになるか、実行時に例外がでます。

英語のドキュメントなり、古い日本語のドキュメントなりを読んで理解できないのであれば、下手に使わない方がよいでしょう。適当に使うと、後で不具合を生む原因になります。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -