PDA

View Full Version : سوال: ساخت کاربر ویندوز



sds1920
جمعه 19 آذر 1389, 16:06 عصر
سلام به همگی.
2تا سوال داشتم.
1-می خواستم ببینم من می تونم با استفاده از C# برای ویندوز xp یک اکانت یا کاربر جدید با user و password بسازم یا نه؟اگه می شه لطف کنید راهنمایی کنید ؟

2-با دستورات C# می شه یک فولدر رو Share کرد یا نه؟اگه می شه چه کاری باید بکنم؟

ممنون از اینکه وقت گذاشتن.

حامد مصافی
جمعه 19 آذر 1389, 17:29 عصر
فقط نوشتم، تست نكردم؛ زحمتش با خودتون


Process myProcess = new Process();

myProcess.StartInfo.FileName = "net.exe";

myProcess.StartInfo.CreateNoWindow = true;

myProcess.StartInfo.Arguments.Add("USER");
myProcess.StartInfo.Arguments.Add("user_name"); //sample username
myProcess.StartInfo.Arguments.Add("/add");
myProcess.StartInfo.Arguments.Add("password"); //sample password
myProcess.Start();





Process myProcess = new Process();

myProcess.StartInfo.FileName = "net.exe";

myProcess.StartInfo.CreateNoWindow = true;

myProcess.StartInfo.Arguments.Add("SHARE");
myProcess.StartInfo.Arguments.Add("music=d:\music"); //share d:\music as music in network

myProcess.Start();

sds1920
یک شنبه 21 آذر 1389, 14:13 عصر
خیلی ممنونم دوست عزیز.ولی Arguments تابع Add نداره.باید چکارش کنم؟

حامد مصافی
یک شنبه 21 آذر 1389, 14:27 عصر
ببخشيد؛ اشتباه از من بود
به اين ترتيب اصلاح كنيد:


Process myProcess = new Process();

myProcess.StartInfo.FileName = "net.exe";

myProcess.StartInfo.CreateNoWindow = true;

myProcess.StartInfo.Arguments = "USER user_name /add password";
myProcess.Start();


Process myProcess = new Process();

myProcess.StartInfo.FileName = "net.exe";

myProcess.StartInfo.CreateNoWindow = true;

myProcess.StartInfo.Arguments = "SHARE music=d:\music";

myProcess.Start();

sds1920
یک شنبه 21 آذر 1389, 14:54 عصر
واقعا ممنوووووووووووونم.خیلی خیلی لطف کردید.
فقط برای سایر دوستان که می خوان استفاده کنن باید بگم که namespace زیر رو باید اضافه کنید


System.Diagnostics

بازم ممنون.

sds1920
یک شنبه 21 آذر 1389, 15:23 عصر
البته من این تابع رو برای share کردن فولدر رو هم پیدا کردم.
مزیت این تابع نسبت به روش قبلی اینه که اگه به دلایلی نتونستید فولدری رو share کنید بهتون error می ده.


private static void QshareFolder(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"] = 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)
{
MessageBox.Show("Unable to share directory.");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "error!");
}
}


البته اول باید References و namespace زیر رو اضافه کنید :


System.Management


منبع : http://www.codeproject.com/KB/system/Share-Folder-c_.aspx?fid=413715

sds1920
یک شنبه 21 آذر 1389, 22:51 عصر
می بخشید.ولی حالا 2 تا سوال جدید دارم.
چطور می تونم بفهمم که یک فولدر Shareشده یا نه؟
چطور می تونم یک فولدر Share رو از حالت share شده دربیارم؟
ممنون.

sds1920
یک شنبه 21 آذر 1389, 23:18 عصر
جواب سوال اول رو پیدا کردم.اینکه بفهمم که یک فولدر Shareشده یا نه؟
با تابع زیر یک لست از فولدرهای share شده بهتون می ده.
namespace و Reference مورد نیاز System.Managment

اینهم تابع :


using (ManagementClass exportedShares = new ManagementClass("Win32_Share"))
using (ManagementClass computer = new
ManagementClass("Win32_computersystem"))
{
string localSystem = null;
ManagementObjectCollection localComputer = computer.GetInstances();
foreach (ManagementObject mo in localComputer)
{
localSystem = mo["Name"].ToString();
}
ManagementObjectCollection shares = exportedShares.GetInstances();
string List = string.Empty;
foreach (ManagementObject share in shares)
// dump UNC path
List += share["Name"] + "\n";
MessageBox.Show(List);
}

sds1920
یک شنبه 21 آذر 1389, 23:37 عصر
مرسی از همه بخاطر توجهی که داشتن و نداشتن.
جواب شوال بعدی رو هم خودم پیدا کردم یعنی اینکه چطور یه فولدر share شده رو از حالت share
دربیارم.البته با کمک پست های دوستمون حامد مصافی و یه سایت دیگه.



System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "net.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = "SHARE Share_Name /delete";
myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
myProcess.Start();