PDA

View Full Version : پنهان کردن Drive



AmirAlimadadi
چهارشنبه 02 مرداد 1387, 13:12 عصر
با سلام به همه دوستان
من یه مشکل کوچولو دارم، من توی یه شبکه، روی تک تک client ها، به یکی از فولدرها و یا درایوهای یکی دیگر از کامپیوترها map netware drive می کنم، تا اینجا مشکلی نیست، اما می خوام که این درایو برای کاربر مخفی باشه، یا بهتر از اون اگه مخفی نباشه ولی کاربر نتونه به اون وارد بشه، می خوام ببینم آیا #C این امکان رو برای من فراهم می کنه(بابرنامه نویسی)، یا اگر امکانش نیست( که فکر نمی کنم)، از کدوم قسمت registry باید استفاده کنم. ممنون

ali_m22
چهارشنبه 02 مرداد 1387, 14:56 عصر
Windows Registry Guide - Registry tweaks and fixes for Windows systems (http://www.pctools.com/guides/registry) یک منبع خوب برای Registry است.

Hide Drives in My Computer :
Hide Drives in My Computer at Registry Guide for Windows (http://www.pctools.com/guides/registry/detail/148/)
Prevent Access to the Contents of Selected Drives :
Prevent Access to the Contents of Selected Drives at Registry Guide for Windows (http://www.pctools.com/guides/registry/detail/1157)

موفق باشید.

AmirAlimadadi
چهارشنبه 02 مرداد 1387, 16:29 عصر
Windows Registry Guide - Registry tweaks and fixes for Windows systems (http://www.pctools.com/guides/registry) یک منبع خوب برای Registry است.

Hide Drives in My Computer :
Hide Drives in My Computer at Registry Guide for Windows (http://www.pctools.com/guides/registry/detail/148/)
Prevent Access to the Contents of Selected Drives :
Prevent Access to the Contents of Selected Drives at Registry Guide for Windows (http://www.pctools.com/guides/registry/detail/1157)

موفق باشید.

از راهنمایی خوبتون ممنون
ولی من هر کاری که کردم نتونستم یکی از Drive ها رو Hidden کنم، اگه ممکنه یه مرجع یا مثال یا هر چیز دیگه ای که کامل تر باشه معرفی کنین، در ضمن اگه بخوام از توی #C این کار رو انجام بدم باید چه کنم

DarkSoroush
چهارشنبه 02 مرداد 1387, 19:22 عصر
شما این بخش رو مطالعه کردین؟ باید مقدار خاصی را برای هر درایو بنویسید:

A: 1, B: 2, C: 4, D: 8, E: 16, F: 32, G: 64, H: 128, I: 256, J: 512, K: 1024, L: 2048, M: 4096, N: 8192, O: 16384, P: 32768, Q: 65536, R: 131072, S: 262144, T: 524288, U: 1048576, V: 2097152, W: 4194304, X: 8388608, Y: 16777216, Z: 33554432, ALL: 67108863


من شخصا امتحان کردم و جواب میده. البته بهتره سیستم رو یک بار ری استارت یا لاگ آف کنید.

ali_m22
چهارشنبه 02 مرداد 1387, 19:22 عصر
اول باید مشخص کنید کدام درایوها رو می خواهید مخفی کنید:
A: 2^0=1
C: 2^2=4
M: 2^12=4096
اگر بخواهید چند درایو را مخفی کنید، باید اعداد آنها را با هم جمع کنید:
A,M: 1+4096=4097

حال باید عدد بدست آمده را در کلید رجیستری مورد نظر ذخیره کنید.
HKEY_CURRENT_USER: در سطح کاربر (فقط کاربر جاری)
HKEY_LOCAL_MACHINE: در سطح سیستم (کل کاربران سیستم)
نام کلید:Software\Microsoft\Windows\CurrentVersion \Policies\
Explorer
نام مقدار:NoDrives (فقط درایوها را مخفی می کند.)
نام مقدار:NoViewOnDrive (اجازه دسترسی به درایوها را نمی دهد.)

مثال:


Microsoft.Win32.RegistryKey rk;
int Drv=0;
byte[] arr={1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0};
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

for (int i = 0; i <= 25; i++)
if (arr[i] == 1)
Drv += ((int)Math.Pow(2, (i)));

rk = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Poli cies\\Explorer");
rk.SetValue("NoDrives", Drv, Microsoft.Win32.RegistryValueKind.DWord);//Hide Drives in
rk.SetValue("NoViewOnDrive", Drv, Microsoft.Win32.RegistryValueKind.DWord);//Prevent Access to the Contents of Drives


در آخر نیز باید Explorer را Restart کنید:



foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("explorer"))
{
p.Kill();
}


خودش Restart می شود، اگر نشد:



if(System.Diagnostics.Process.GetProcessesByName("explorer").Length==0)
System.Diagnostics.Process.Start("explorer.exe");



فکر کنم خیلی ساده توضیح دادم.

موفق باشید.

AmirAlimadadi
یک شنبه 10 آذر 1387, 13:47 عصر
با سلام به همه دوستان
ممنون از راهنماییتون، مشکل من حل شد، ولی یه مشکل دیگه ای که دارم اینه که وقتی درایوی رو پنهان می کنم و یا دسترسی رو می گیرم، از طریق برخی نرم افزارها می شه به اون دسترسی پیدا کرد. مثلا اگه از توی word بخوایم یه فایل رو توی درایوی که مخفی است Save کنیم(اگه اون درایو سیستم عامل باشه) word این اجازه رو می ده، یا اگه یه درایوی مخفی باشه و ما اون رو آشکار کنیم، word متوجه نمی شه، یعنی باید word دوباره راه اندازی بشه تا متوجه تغییرات بشه، آیا راهی برای این مشکل هست؟
در ضمن اون قسمت آخر کد کامپیوتر رو reset نمی کنه، چطوری می شه کامپیوتر با استفاده از کدنویسی reset بشه؟؟؟؟

mamali_programer
یک شنبه 10 آذر 1387, 14:27 عصر
سلام دوست عزیز
میتونی یک Cmd رو اجرا کنی و توی اون دستور shutdown -r بنویسی .

AmirAlimadadi
یک شنبه 10 آذر 1387, 14:32 عصر
می شه بیشتر توضیح بدین؟؟؟؟

AmirAlimadadi
دوشنبه 11 آذر 1387, 10:58 صبح
سلام
بچه ها هیچ کس نیست که بدونه؟

shytonak
دوشنبه 11 آذر 1387, 14:11 عصر
دوست عزيز يه راه براي اين كار هست البته من راهشو از طريق C# نميدونم.
براي اين كار برو رو my computer راست كليك كن بعد برو تو manage بعد disk management بعد رو درايو مورد نظر راست كليك كن و گزينه change drive..... كليك كن بعد remove و بعد ok با اين كار فقط درايو مخفي و دسترسي به اون امكان پذير نيست اطلاعات توي درايو هم پاك نميشن.
اگه تونستي با سي شارپ اين كاو بكني به ما هم بگيد.

regbyte
دوشنبه 11 آذر 1387, 22:17 عصر
خب شما فقط حرف اختصاص داده شده به درایو مورد نظر رو حذف می کنید،
که به همین صورت دوباره میشه آنو برگردوند، اما استفاده از رجیستری همانطور که دوستان اشاره کردند،
راه بهتری است، تازه می تونید دسترسی به رجیستری رو هم محدود کنید(در همین سایت pctools.com کلید رجیستریش هست.)

AmirAlimadadi
چهارشنبه 13 آذر 1387, 08:16 صبح
ببنید دوستان، من از راه register تونستم این کار رو بکنم، اما همون طور که گفتم از طریق برخی برنامه ها مثل word می شه توی درایو فایل گذاشت، من فکر می کنم که اگه کامپیوتر reset بشه تغییرات اعمال میشه، اون کدی که برای reset کردن گذاشتین کار نمی کنه، اگه میشه کد راه اندازی مجدد کامپیوتر رو بذارین. ممنون

shytonak
چهارشنبه 13 آذر 1387, 14:01 عصر
برای ریستارت کردن از کد زیر استفاده کن

Process.Start("shutdown","-r");

regbyte
چهارشنبه 13 آذر 1387, 15:56 عصر
ما همون طور که گفتم از طریق برخی برنامه ها مثل word می شه توی درایو فایل گذاشت، من فکر می کنم که اگه کامپیوتر reset بشه تغییرات اعمال میشه، اون کدی که برای reset کردن گذاشتین کار نمی کنه، اگه میشه کد راه اندازی مجدد کامپیوتر رو بذارین.



نام مقدار:NoDrives (فقط درایوها را مخفی می کند.)
نام مقدار:NoViewOnDrive (اجازه دسترسی به درایوها را نمی دهد.)



شما باید از NoViewOnDrive و NoDrives هر دو استفاده کنید، من تست کردم، در Word هم جواب میده!

نیازی به reset کردن سیستم نیست، فقط باید Explorer رو reset کنید:


در آخر نیز باید Explorer را Restart کنید:


foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("explorer")) { p.Kill(); }

خودش Restart می شود، اگر نشد:



if(System.Diagnostics.Process.GetProcessesByName("explorer").Length==0) System.Diagnostics.Process.Start("explorer.exe");



نرم افزارهایی مانند Easy Tweak همین کار رو انجام میدن:
http://www.download.com/Easy-Tweak/3000-2094_4-10892759.html?tag=mncol;lst&cdlPid=10897623
یعنی فقط Explorer رو reset می کنند.

AmirAlimadadi
شنبه 16 آذر 1387, 09:45 صبح
شما باید از NoViewOnDrive و NoDrives هر دو استفاده کنید، من تست کردم، در Word هم جواب میده!

نیازی به reset کردن سیستم نیست، فقط باید Explorer رو reset کنید:


دوست عزیز، این پیشنهاد شما به نظر درست می رسه، اما با سیاست برنامه من سازگار نیست، به این معنی که من به کاربرم اجازه می دهم که درایو رو پنهان کنه و یا خارج از دسترس کنه، اما با این پیشنهاد دیگه کاربر اختیار و انتخابی نداره.
لطفا اگه پیشنهاد دیگه ای به نظرتون می رسه بگویید

regbyte
شنبه 16 آذر 1387, 10:51 صبح
خب با این روش دقیقا همین کار :



به این معنی که من به کاربرم اجازه می دهم که درایو رو پنهان کنه و یا خارج از دسترس کنه،


رو می تونید انجام بدید!!!
مشکل رو دقیقتر توضیح بدین.

AmirAlimadadi
شنبه 16 آذر 1387, 11:04 صبح
ببیند اگه من همزمان هر دو رو مقدار بدم (مثلا 4) درایو c هم بسته می شه و هم مخفی می شه، در صورتی که من می خوام که فقط مخفی بشه، متوجه شدین

regbyte
شنبه 16 آذر 1387, 11:59 صبح
خب فقط از NoDrives استفاده کنید!!!

AmirAlimadadi
یک شنبه 17 آذر 1387, 08:48 صبح
اگه که فقط از Nodrives استفاده کنم همون مشکلی که گفتم پیش می یاد، همونی که داریم در موردش بحث می کنیم

AmirAlimadadi
چهارشنبه 30 بهمن 1387, 08:37 صبح
باسلام به همه، من یه مشکل دیگه ای در مورد drive ها دارم، من یه برنامه می خوام که روی سیستم عامل نصب بشه، و مثل windows service (در پس زمینه back ground ) همواره در حال اجرا (آماده) باشه، و اگه روی یه drive کلیک شد، اجرا بشه، چیزی شبیه به babylon که با یه کلید خاص فعال می شه.