PDA

View Full Version : تغییر خصوصیات یک پوشه



alireza_tavakol
سه شنبه 03 مهر 1386, 01:49 صبح
من میخوام خوصوصیات فقط خوندنی یا مخفی کردن یک پوشه را تغییر بدم و کلیه فایل ها و زیر پوشه ها ی موجود در اون پوشه یه مراتب خوصوصیاتشون تغییر کنه
یک API داشتم برای کار روی یک فایل ولی اون بدردم نخورد کسی راهشو مدونه

MShirzadi
سه شنبه 03 مهر 1386, 04:35 صبح
این یه کلیسی هست که یک فولدر روShare میکنه امیدوارم بهدردت بخوره .
کار با اون هم ساده هست و 3 تا Parameter میگیره که بخونی می فهمی
این کد رو کاملا داخل یه کلاس کپی بکن بعد ازش استفاده کن


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Management;
namespace Qshare
{
class Share_Folder
{
public static void Share(string FolderPath, string ShareName, string Description)
{
try
{
// Create a ManagementClass object
ManagementClass managementClass = new ManagementClass("Win32_Share");
// Create ManagementBaseObjects for in and out parameters
ManagementBaseObject inParams = managementClass.GetMethodParameters("Create");
ManagementBaseObject outParams;
// Set the input parameters
inParams["Description"] = Description;
inParams["Name"] = ShareName;
inParams["Path"] = FolderPath;
inParams["Type"] = 0x0; // Disk Drive
//Another Type:
// DISK_DRIVE = 0x0
// PRINT_QUEUE = 0x1
// DEVICE = 0x2
// IPC = 0x3
// DISK_DRIVE_ADMIN = 0x80000000
// PRINT_QUEUE_ADMIN = 0x80000001
// DEVICE_ADMIN = 0x80000002
// IPC_ADMIN = 0x8000003
inParams["MaximumAllowed"] = "deny";//int maxConnectionsNum;
// Invoke the method on the ManagementClass object
outParams = managementClass.InvokeMethod("Create", inParams, null);
// Check to see if the method invocation was successful
if ((uint)(outParams.Properties["ReturnValue"].Value) != 0)
{
throw new Exception("Unable to share directory.");
}
}
catch
{
}
}
}
}

بای بای

PC2st
سه شنبه 03 مهر 1386, 13:03 عصر
من میخوام خوصوصیات فقط خوندنی یا مخفی کردن یک پوشه را تغییر بدم و کلیه فایل ها و زیر پوشه ها ی موجود در اون پوشه یه مراتب خوصوصیاتشون تغییر کنه
میتونین از خاصیت Attributes از کلاسهای DirectoryInfo و FileInfo استفاده کنین.

hassan razavi
سه شنبه 03 مهر 1386, 14:48 عصر
کد زیر مشکلتون رو حل میکنه


System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("c:\\a
di.Attributes = System.IO.FileAttributes.ReadOnly
di.Attributes = System.IO.FileAttributes.Hidden

alireza_tavakol
سه شنبه 03 مهر 1386, 17:00 عصر
دوستان توجهی به سوال مطرح شده ندارن منم شرمده میشم
این کلاس ها فقط روی خود پوشه نام برده عملیات انجام میدهند
در صورتی که در متن سوال من قید شده بود که می خواهیم
کلیه زیر پوشه ها و فایل های موجود در زیر پوشه ها خصوصیاتشون به مراتب تغییر پیدا کنه

PC2st
سه شنبه 03 مهر 1386, 21:08 عصر
کلیه زیر پوشه ها و فایل های موجود در زیر پوشه ها خصوصیاتشون به مراتب تغییر پیدا کنه
برای اینکار لیست فایلهای درون پوشه رو بگیرید یعنی توسط متد GetFiles از شیئ DirectoryInfo اشیاء فایلها رو بدست بیارید و خاصیت Attributes اونها رو تنظیم کنید. میتونید این کار رو از طریق یک متد بازگشتی انجام بدید تا Subfolders هم Attributes شون تنظیم بشه.

alireza_tavakol
چهارشنبه 04 مهر 1386, 00:37 صبح
این راهی رو که بهش اشاره کردین قبلا به فکر خودم رسیده بود ولی دنبال یه راه فنی تر بودم و البته راه ساده تر
تو رو خدا اگه کلاس آمادشو داری یا حال نوشتنشو داری واسم بزار بخدا دعات میکنم

MShirzadi
جمعه 06 مهر 1386, 19:57 عصر
این هم کدش


private void FileHidden(string str, bool IsHidden, bool IsReadonly)
{
DirectoryInfo dir = new DirectoryInfo(str);
if (IsReadonly == true)
{
dir.Attributes = FileAttributes.ReadOnly;
}
else
{
dir.Attributes = FileAttributes.Archive;
}
if (IsHidden == true)
{
dir.Attributes = FileAttributes.Hidden;
}
else
{
dir.Attributes = FileAttributes.Normal;
}
string[] files = Directory.GetFiles(str);
for (int i = 0; i < files.Length; i++)
{
FileInfo file = new FileInfo(files[i]);
if (IsReadonly == true)
{
file.Attributes = FileAttributes.ReadOnly;
}
else
{
file.Attributes = FileAttributes.Archive;
}
if (IsHidden == true)
{
file.Attributes = FileAttributes.Hidden;
}
else
{
file.Attributes = FileAttributes.Normal;
}


}
string[] dirs = Directory.GetDirectories(str);
for (int i = 0; i < dirs.Length; i++)
{
FileHidden(dirs[i], IsHidden, IsReadonly);
}
}