من میخوام خوصوصیات فقط خوندنی یا مخفی کردن یک پوشه را تغییر بدم و کلیه فایل ها و زیر پوشه ها ی موجود در اون پوشه یه مراتب خوصوصیاتشون تغییر کنه
یک API داشتم برای کار روی یک فایل ولی اون بدردم نخورد کسی راهشو مدونه
من میخوام خوصوصیات فقط خوندنی یا مخفی کردن یک پوشه را تغییر بدم و کلیه فایل ها و زیر پوشه ها ی موجود در اون پوشه یه مراتب خوصوصیاتشون تغییر کنه
یک API داشتم برای کار روی یک فایل ولی اون بدردم نخورد کسی راهشو مدونه
این یه کلیسی هست که یک فولدر رو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
{
}
}
}
}
بای بای
میتونین از خاصیت Attributes از کلاسهای DirectoryInfo و FileInfo استفاده کنین.من میخوام خوصوصیات فقط خوندنی یا مخفی کردن یک پوشه را تغییر بدم و کلیه فایل ها و زیر پوشه ها ی موجود در اون پوشه یه مراتب خوصوصیاتشون تغییر کنه
کد زیر مشکلتون رو حل میکنه
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("c:\\a
di.Attributes = System.IO.FileAttributes.ReadOnly
di.Attributes = System.IO.FileAttributes.Hidden
دوستان توجهی به سوال مطرح شده ندارن منم شرمده میشم
این کلاس ها فقط روی خود پوشه نام برده عملیات انجام میدهند
در صورتی که در متن سوال من قید شده بود که می خواهیم
کلیه زیر پوشه ها و فایل های موجود در زیر پوشه ها خصوصیاتشون به مراتب تغییر پیدا کنه
برای اینکار لیست فایلهای درون پوشه رو بگیرید یعنی توسط متد GetFiles از شیئ DirectoryInfo اشیاء فایلها رو بدست بیارید و خاصیت Attributes اونها رو تنظیم کنید. میتونید این کار رو از طریق یک متد بازگشتی انجام بدید تا Subfolders هم Attributes شون تنظیم بشه.کلیه زیر پوشه ها و فایل های موجود در زیر پوشه ها خصوصیاتشون به مراتب تغییر پیدا کنه
این راهی رو که بهش اشاره کردین قبلا به فکر خودم رسیده بود ولی دنبال یه راه فنی تر بودم و البته راه ساده تر
تو رو خدا اگه کلاس آمادشو داری یا حال نوشتنشو داری واسم بزار بخدا دعات میکنم
این هم کدش
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);
}
}