PDA

View Full Version : سوال: اشتراک پرینتر در شبکه



navidkhalilian
چهارشنبه 05 بهمن 1390, 01:27 صبح
سلام دوستان. من می خوام به جای اینکه کاربر از قسمت Control Panel/printers پرینتر رو Share کنه از داخل برنامه اینکار رو انجام بده.من لیست پرینتر ها رو داخل یک لیست گذاشتم اما نمیدونم کد share کردن پرینتر چیه.ممنون میشم دوستان کمک کنند.تشکر

navidkhalilian
شنبه 08 بهمن 1390, 00:21 صبح
از دوستان کسی نیست کمک کنه؟

Esmail Solhkhah
شنبه 08 بهمن 1390, 02:06 صبح
1: استفاده ازNetShareAdd (http://msdn.microsoft.com/en-us/library/windows/desktop/bb525384%28v=vs.85%29.aspx)

2:استفاده از WMI (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582%28v=vs.85%29.aspx)

تو روش دوم میتونید از این کد استفاده کنید

string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", txtPrinterName.Text);

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

ManagementObjectCollection cols = searcher.Get();

foreach (ManagementObject printer in cols)
{
if ((bool)printer.GetPropertyValue("Shared") == false)
{
printer.SetPropertyValue("Shared", true);

printer.Put();
}
}

موفق باشید.

navidkhalilian
یک شنبه 09 بهمن 1390, 16:14 عصر
1: استفاده ازNetShareAdd (http://msdn.microsoft.com/en-us/library/windows/desktop/bb525384%28v=vs.85%29.aspx)

2:استفاده از WMI (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582%28v=vs.85%29.aspx)

تو روش دوم میتونید از این کد استفاده کنید

string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", txtPrinterName.Text);

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

ManagementObjectCollection cols = searcher.Get();

foreach (ManagementObject printer in cols)
{
if ((bool)printer.GetPropertyValue("Shared") == false)
{
printer.SetPropertyValue("Shared", true);

printer.Put();
}
}

موفق باشید.

سلام دوست عزیز ممنون از کمکتون. من از کد دوم از همین کدی که شما اینجا نوشتید استفاده کردم ولی با خطای زیر مواجه میشم.ممنون میشم راهنمایی کنید.
Generic failure
تشکر

Esmail Solhkhah
یک شنبه 09 بهمن 1390, 17:03 عصر
سرویس Server باید تو کامپیوتر مورد نظر اجرا باشه و باید بتونید بدون برنامه خودتون پرینتر را Share کنید

(یه بار دستی پرینتر را Share بعد UnShare کنید)

موفق باشید.

navidkhalilian
دوشنبه 29 اسفند 1390, 04:42 صبح
سرویس Server باید تو کامپیوتر مورد نظر اجرا باشه و باید بتونید بدون برنامه خودتون پرینتر را Share کنید

(یه بار دستی پرینتر را Share بعد UnShare کنید)

موفق باشید.


سلام دوست عزیز ممنونم از راهنمایی.اما یه مشکلی وجود داره.اینکه اگه قرار باشه برنامه تحت شبکه باشه که نمیشه همه سیستم ها رو یکی یبار پرینتر هاشون را دستی share و unshare کرد تازه بعضی ها چند تا پرینتر دارند.آیا راه حلی برای این مشکل وجود داره؟بازم تشکر