PDA

View Full Version : درست کردن پوشه مشترک و مپ کردن آن



parsakz
یک شنبه 02 اردیبهشت 1386, 20:12 عصر
با سلام
میخواهم با وبی نت2005 با کد روی سرور 2003 یک پوشه مشترک با اجازه یک کاربر تعریف شده در سرور2003 درست کنم و سپس آنرا روی کامپیوتر کاربر مپ کنم . آیا کسی تجربه ای دارد؟ با تشکر

saeed_rezaei
یک شنبه 02 اردیبهشت 1386, 23:41 عصر
سلام.
در کد پایین دوتا تابع تعریف شده که یکیشون برای مپ کردنه و دیگری برای دیزکانکت.


Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _
( ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, _
ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer

Public Declare Function WNetCancelConnection2 Lib "mpr" Alias "WNetCancelConnection2A" _
(ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Integer) As Integer

<StructLayout(LayoutKind.Sequential)> _
Public Structure NETRESOURCE
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure

Public Const ForceDisconnect As Integer = 1
Public Const RESOURCETYPE_DISK As Long = &H1

Public Function MapDrive(ByVal DriveLetter As String, ByVal UNCPath As String) As Boolean

Dim nr As NETRESOURCE
Dim strUsername As String
Dim strPassword As String

nr = New NETRESOURCE
nr.lpRemoteName = UNCPath
nr.lpLocalName = DriveLetter & ":"
strUsername = Nothing '(add parameters to pass this if necessary)
strPassword = Nothing '(add parameters to pass this if necessary)
nr.dwType = RESOURCETYPE_DISK

Dim result As Integer
result = WNetAddConnection2(nr, strPassword, strUsername, 0)

If result = 0 Then
Return True
Else
Return False
End If
End Function

Public Function UnMapDrive(ByVal DriveLetter As String) As Boolean
Dim rc As Integer
rc = WNetCancelConnection2(DriveLetter & ":", 0, ForceDisconnect)

If rc = 0 Then
Return True
Else
Return False
End If

End Function



البته یه راه حل دیگه هم هستش.
شما می تونید از طریق command line هم یک دایرکتوری خالی ایجاد کنید، هم می تونید اون رو به اشتراک بگذارید و هم می تونید اونو map یا dkc کنید. من خودم این راه حل رو ترجیح می دم.

saeed_rezaei
دوشنبه 03 اردیبهشت 1386, 13:12 عصر
اما از طریق خط فرمان از کدهای زیر استفاده کنید.

ساخت دایرکتوری


FileIO.FileSystem.CreateDirectory(مسیر و نام دایرکتوری که می خواید ایجاد کنید)


به اشتراک گذاری پوشه



Process.Start("net", "share " & txt_sharename.Text & "=" & txt_createdirectory.Text & " /UNLIMITED")


که در دستور بالا، txt_sharename نامی است که به فولدر نسبت داده می شود. و txt_createdirectory آدرس واقعی فولدری است که می خواهیم به اشتراک بگذاریم.

و با دستور زیر مپ می کنیم.



process.start ("net" ,"use " & mapname & " \\computername\sharedname (file://\\computername\sharedname) " & password & " /user " & username )

Microsoft.net
سه شنبه 04 اردیبهشت 1386, 01:48 صبح
بعضی وقتها بعد از map کردن و اجرا کردن فایل از روی کلاینتها پیغام خطا از security میده در صورتی که روی سرور نمیده ، مخصوصا وقتی با رجیستری کار کرده باشی تو برنامت ، کسی میدونه باید چی کار کرد ؟!

parsakz
سه شنبه 04 اردیبهشت 1386, 20:06 عصر
مشکلی که من داشتم همین بود وقتی میخواستم به پوشه مشترک وصل شوم خطای امنیتی میداد لذا میخواهم این تضاد را از طریق مپ کردن پوشه حل کنم چون در هاردکد اینکار انجام داده ام . اگر به نتیجه جدید رسیدم حتما شما را در جریان میگذارم
پارسا

Amir_Sharif
سه شنبه 30 مرداد 1386, 22:48 عصر
باسلام
اگه بخوام پوشه اشتراک گذاری شده قابلیت دستکاری نداشته باشه باید چه تغییری انجام بدم؟

Amir_Sharif
شنبه 24 شهریور 1386, 14:49 عصر
با سلام
چطوری می تونم پوشه shar شده را از shar در بیارم.
با تشکر

saeed_rezaei
سه شنبه 27 شهریور 1386, 09:56 صبح
سلام
برای اینکه یه پوشه رو از حالت share خارج کرد بایستی اون رو با استفاده از سوویچ /delete حذف کرد
به کد زیر نگاه کنید:


process.start ("net" ," share " & sharedfoldername & " /delete")