View Full Version : بدست آوردن و تغییر مجوز دسترسی
saber67
جمعه 27 بهمن 1391, 16:42 عصر
چه طور میشه سطح دسترسی به یه فایل یا پوشه رو بدست آورد و چه طور میشه تغییرش داد؟
منظورم Attributs فایل و فولدر نیست! که مثلا قابلیت Read-onley رو تغییر بدیم!
منظورم Premissions های فایل و فولدر هاست
توی ویندوز سون میشه مجوزهای یه پوشه یا فایل رو برای یه یوزر طوری تعریف کرد که مثلا فقط بتونه اونو بخونه یا حتی طوری تعریف کرد که حتی اگه آدمین هم باشه هیچ دخل و تصرفی توی فایل نتونه داشته باشه (تا وقتی مجوز رو تغییر نداده باشه)
عکس ضمیمه که توی ویندوز سون گرفته شده کاملا منظور رو می رسونه
(تو این عکس مجوز تغییرات از کاربر گرفته شده)
mehran901
جمعه 27 بهمن 1391, 16:44 عصر
البته تو اینزمینه تاحالا کار نکردم ولی مطمئنا باید دنبال کلید های رجیستری خاصی بگیردین ... مطمئنم با رجیستری میشه اینجور کاری رو انجام داد...
mehran901
جمعه 27 بهمن 1391, 16:48 عصر
البته write و read و جلوگیری از اجرا شدن واسه یوزر خاصی رو میشه به راحتی انجام داد، 2 مورد اول که یکی راهاش باز کردن فایل در حالی هست که پارامتر lock فعال باشه و مورد سوم هم قبلا با رجیستری انجام دادن .... میتونید مشخص کنید فایل های اجرایی خاصی دیگه اجرا نشوند! ولی تاسفانه الان آدرس رجیستریش یادم نیس
ی پارامتر Share هم فک کنم داشتیم میشد از share شدن برنامه جلوگیری کرد
mohammadsamadi1377
جمعه 27 بهمن 1391, 16:49 عصر
من هم بهش نياز دارم
saber67
جمعه 27 بهمن 1391, 18:07 عصر
یکی راهاش باز کردن فایل در حالی هست که پارامتر lock فعال باشه
ممنون دوست عزیز
ولی لطفا لطفا لطفا لطفا اول خوب سوال رو بخونین بعد جواب بدین!
خط اول سوال من: چه طور میشه سطح دسترسی به یه فایل یا پوشه رو بدست آورد و چه طور میشه تغییرش داد؟
اینا که شما گفتی به این ربط داشت؟ اینا برای اینه که مثلا از یه فایل بخوایم محافظت کنیم، میایم اونو به صورت lock باز می کنیم که برنامه دیگه ای اونو تغییر نده
ناراحت نشی ولی انگار کلا شما با روش های من درآوردی خیلی حال می کنی!
روش من درآوردی وقتی خوبه که راه منطقی برای کارمون نداشته باشیم یا اینکه راهش خیلی سخت باشه
امیدوارم ناراحت نشین:چشمک:
mehran901
جمعه 27 بهمن 1391, 18:23 عصر
آهان ، نه بابا ناراحت بشم ؟ کی ؟ من ؟ ههه
آره اونی که من گفتم منحصر به حالت های خاص و برپایه فایل ها بود ، پیشنهاد میکنم دستور Cacls داس رو بررسی کنی واسه مدیریت کنترل دسترسی به فایل و فولدر تاجایی که یادم میاد بود ،
اینم راهنمای استفاده از اون
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm]
[/R user [...]] [/P user:perm [...]] [/D user [...]]
filename Displays ACLs.
/T Changes ACLs of specified files in
the current directory and all subdirectories.
/L Work on the Symbolic Link itself versus the target
/M Changes ACLs of volumes mounted to a directory
/S Displays the SDDL string for the DACL.
/S:SDDL Replaces the ACLs with those specified in the SDDL string
(not valid with /E, /G, /R, /P, or /D).
/E Edit ACL instead of replacing it.
/C Continue on access denied errors.
/G user:perm Grant specified user access rights.
Perm can be: R Read
W Write
C Change (write)
F Full control
/R user Revoke specified user's access rights (only valid with /E).
/P user:perm Replace specified user's access rights.
Perm can be: N None
R Read
W Write
C Change (write)
F Full control
/D user Deny specified user access.
Wildcards can be used to specify more than one file in a command.
You can specify more than one user in a command.
Abbreviations:
CI - Container Inherit.
The ACE will be inherited by directories.
OI - Object Inherit.
The ACE will be inherited by files.
IO - Inherit Only.
The ACE does not apply to the current file/directory.
ID - Inherited.
The ACE was inherited from the parent directory's ACL.
البته اینم رو بگم ، نیاز نیست دستوراتو با شل تو داس منتقل کنی ، با استفاده از wscript.shell و scripting.filesystemobject میتونی کامل باهاش کار کنی
البته باهاش کار نکردم زیاد ، ولی امیدوارم به ی کاری بیاد
saber67
جمعه 27 بهمن 1391, 19:55 عصر
البته اینم رو بگم ، نیاز نیست دستوراتو با شل تو داس منتقل کنی ، با استفاده از wscript.shell و scripting.filesystemobject میتونی کامل باهاش کار کنی
البته باهاش کار نکردم زیاد ، ولی امیدوارم به ی کاری بیاد
آره این همونیه که می خواستم اما پیچیدس
البته بلدم تو محیط CMD باهاش کار کنم
هم سطح دسترسی رو بدست آوردم هم تغییر دادم
اما wscript.shell که برای اجرای دستورات توی محیط داس هستش (داس رو تو یه پنجره باز می کنیم و از این روش کد هامون رو توش اجرا می کنیم)!!
من این جوری ازش استفاده می کنم:
Shell "cmd.exe"
Dim WinShell
Set WinShell = CreateObject("Wscript.shell")
روش دیگه ای هست که پنجرش رو باز نکنیم؟ اگه هست یکم بیشتر توضیح بده
بعدش اگه روشی باشه که همین کارو از طریق API انجام بده خیلی بهتره!
همون طور که گفتم این پیچیدس! باید اسم یوزر رو چک کنی ببینی تو رشته ای که بر می گردونه هست یا نه؟ بعد اگه بود بیای ببینی چه سطح دسترسی داره (کلا باید رشته ای که بر می گردونه رو پردازش کرد و مستقیم جوابی به ما نمیده)
مثلا واسه همون فایلی که تو عکس بود نتیجش این جوریه
d:\Test.txt NT AUTHORITY\Authenticated Users:F
SABER-PC\Saber:F
BUILTIN\Administrators:F
کسی API ای برای این کار سراغ نداره؟؟
mehran901
جمعه 27 بهمن 1391, 21:20 عصر
آره میشه بدون باز کردن پنجره داس دستوران رو اجرا کرد
واسه این کار من از رفرنس windowns script host object model استفاده میکنم
مثلا
dim wsh as new wshshell
call wsh.run("CMD.exe /c mkdir d:\12345",0)
set wsh = nothing
البته همون wscript.shell هستا ، ولی واسه اینکه پارامتراش یادم نبود کلاسشو لود کردم
اگه با shell هم میخواین به داس دسترسی داشته باشین ، برای اینکه باز نشه ی آرگومان vbhide آخرش اضافه کنید
ولی مقدار برگشتی نداره .... ی سری روش مندرآوردی هست با api و اینا ولی نتونستم سرعتش رو بهینه کنم! با api میشه مقدار برگشتی رو چک کرد
saber67
شنبه 28 بهمن 1391, 11:12 صبح
فکر کنم اشتباه منظورم رو فهمیدین، API رو برای بدست آوردن و تغییر بدون واسطه سطح دسترسی می خوام نه برای پردازش متن خروجی CMD
دیگه نیایم دستورات رو تو داس اجرا کنیم فقط یه API رو صدا بزنیم که سطح دسترسی فلان آبجکت رو بهمون بده
مثل تابع GetFileAttributesA که خصوصیات فایل رو بر می گردونه، باید یه API هم واسه سطح دسترسی باشه:متفکر:
برای پردازش متن خروجی داس هم یه سورس توی کامپیوتر خودم پیدا کردم خیلی خفنه!:کف:
مستقیم تو برنامه دستور داس رو اجرا می کنی و مستقیم جواب می گیری!:تشویق:
یه جورایی برنامه رو سوار بر اسب گریز پای داس می کنه!:لبخند:
mehran901
شنبه 28 بهمن 1391, 11:27 صبح
آره این کلاس رو داشتم و متاسفانه خیلی ضعیف هست ، از یوزر کنترلی که در زیر ضمیمه کردم میتونید واسه کنترل کامل روی دستورات داس استفاده کنید
درمورد اون api که مد نظرتون باشه ، تاحالا روش کار نکردم ،... تو گوگل سرچ بزنین شاید چیزی پیدا شد (البته منظروم سرچ فارسی نیست چون هیچی پیدا نمیشه :D )
100138
راستی بجای استفاده از اون getfileattributesA میتونید از دستور داخلی getattr استفاده کنید ، ویژگی های پوشه رو هم برمیگردونه
saber67
شنبه 28 بهمن 1391, 14:17 عصر
راستی بجای استفاده از اون getfileattributesA میتونید از دستور داخلی getattr استفاده کنید ، ویژگی های پوشه رو هم برمیگردونه
آره می دونم خود VB برای گرفتن مشخصات فایل و فولدر تابع داره، منظورم از اسم بردن این API روشن کردن موضوع بود
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.