PDA

View Full Version : سوال: کپی کردن فایل در سرور



dotnetplass
دوشنبه 30 بهمن 1391, 15:37 عصر
با سلام
من می خوام یک فایل را از داخل یک کلاینت به داخل یک پوشه که دسترسی آن Deny است کپی کنم آیا کسی می تواند من را کمک نماید
من این کد رو نوشتم ولی روی خط DirectorySecurity dSecurity = dInfo.GetAccessControl(); پیغام خطا می دهد
چه کنم؟
100221

mreza80
چهارشنبه 02 اسفند 1391, 13:14 عصر
دوستان عزیز منهم این مشکل رو دارم اگه کسی راهنمایی کنه ممنون میشویم

mreza80
پنج شنبه 03 اسفند 1391, 14:20 عصر
دوستان عزیز من این مطلب رو پیدا کردم
به این صورت که ابتدا در یک کلاس عمومی توابع زیر رو می نویسیم
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using BOOL = System.Boolean;
using DWORD = System.UInt32;
using LPWSTR = System.String;
using NET_API_STATUS = System.UInt32;

namespace GE.GeClasses
{
class ConectionClass
{
public class UNCAccess
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct USE_INFO_2
{
internal LPWSTR ui2_local;
internal LPWSTR ui2_remote;
internal LPWSTR ui2_password;
internal DWORD ui2_status;
internal DWORD ui2_asg_type;
internal DWORD ui2_refcount;
internal DWORD ui2_usecount;
internal LPWSTR ui2_username;
internal LPWSTR ui2_domainname;
}

[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern NET_API_STATUS NetUseAdd(
LPWSTR UncServerName,
DWORD Level,
ref USE_INFO_2 Buf,
out DWORD ParmError);

[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern NET_API_STATUS NetUseDel(
LPWSTR UncServerName,
LPWSTR UseName,
DWORD ForceCond);

private string sUNCPath;
private string sUser;
private string sPassword;
private string sDomain;
private int iLastError;
public UNCAccess()
{
}
public UNCAccess(string UNCPath, string User, string Domain, string Password)
{
login(UNCPath, User, Domain, Password);
}
public int LastError
{
get { return iLastError; }
}

/// <summary>
/// Connects to a UNC share folder with credentials
/// </summary>
/// <param name="UNCPath">UNC share path</param>
/// <param name="User">Username</param>
/// <param name="Domain">Domain</param>
/// <param name="Password">Password</param>
/// <returns>True if login was successful</returns>
public bool login(string UNCPath, string User, string Domain, string Password)
{
sUNCPath = UNCPath;
sUser = User;
sPassword = Password;
sDomain = Domain;
return NetUseWithCredentials();
}
private bool NetUseWithCredentials()
{
uint returncode;
try
{
USE_INFO_2 useinfo = new USE_INFO_2();

useinfo.ui2_remote = sUNCPath;
useinfo.ui2_username = sUser;
useinfo.ui2_domainname = sDomain;
useinfo.ui2_password = sPassword;
useinfo.ui2_asg_type = 0;
useinfo.ui2_usecount = 1;
uint paramErrorIndex;
returncode = NetUseAdd(null, 2, ref useinfo, out paramErrorIndex);
iLastError = (int)returncode;
return returncode == 0;
}
catch
{
iLastError = Marshal.GetLastWin32Error();
return false;
}
}

/// <summary>
/// Closes the UNC share
/// </summary>
/// <returns>True if closing was successful</returns>
public bool NetUseDelete()
{
uint returncode;
try
{
returncode = NetUseDel(null, sUNCPath, 2);
iLastError = (int)returncode;
return (returncode == 0);
}
catch
{
iLastError = Marshal.GetLastWin32Error();
return false;
}
}

}
}
}
سپس با دستور زیر خوانی میکنیم ولی نیدونم چه مشکلی داره که همیشه خطای 87 رو برمیگردونه اگه کسی راهنمایی کنه منون میشم
ConectionClass.UNCAccess unc = new ConectionClass.UNCAccess(@Distention, "username", "domain", "password");

mreza80
پنج شنبه 10 اسفند 1391, 13:40 عصر
مدیران و اساتید وآقایون عزیز برنامه نویس لطفا به سوال جواب بدین یعنی واقعا کسی تا الان اینکارو نکرده یا حوصله ای برای جواب دادن ندارن

mreza80
چهارشنبه 08 خرداد 1392, 13:36 عصر
دوستان عزیز کسی پیدا میشه یک راه حلی به ما ارائه کنه بخدا گیرافتادیم

mreza80
دوشنبه 11 شهریور 1392, 10:07 صبح
آقا کمککککککککککککککککککککککک ککککککککککککککککک:ناراحت:: صبانی++:

mreza80
دوشنبه 29 مهر 1392, 16:29 عصر
با سلام آقا مشکل حل شد اگه نیاز است بگین تا توضیح داده شود

behi1ty
شنبه 04 آبان 1392, 11:45 صبح
با سلام آقا مشکل حل شد اگه نیاز است بگین تا توضیح داده شود
با سلام
اگر لطف كني بگي كه ممنون مي شم

mreza80
یک شنبه 05 آبان 1392, 14:02 عصر
با سلام
اگر لطف كني بگي كه ممنون مي شم
دوست عزیز
ابتدا کلاسی با نام ConectionClass ایجاد میکنی
سپس با استفاده از دستور زیر
ConectionClass.UNCAccess unc = new ConectionClass.UNCAccess(@Distention, "username", "domain", "password");
فرا خوانی میکنی
ِDistention نام مسیری است که کاربر مرود نظر به آن دسترسی دارد
username نام کاربری کامل در دامین
domain نام شبکه محلی
Password کلمه عبور کاربر مورد نظر
برای استفاده مثلا قبل از کپی با فراخوانی تابع مجوز را اخذ کرده و بعد از اتمام فعالیت با استفاده از دستور زیر مجوز را حذف نمائید
NetUseDelete()

hassanmosavi
پنج شنبه 20 دی 1397, 14:41 عصر
خب خطای 87 رو چیکار کردین:متفکر:
من همین خطا رو دارم