PDA

View Full Version : سطح دسترسي رجيستري



kamran_fa
یک شنبه 13 تیر 1389, 09:16 صبح
دوستان كسي ميدونه چطور ميشه سطح دسترسي رجيستري رو تغيير داد، در شبكه يوزر معمولي دسترسي به كليد HKEY_LOCAL_MACHINE براي ويرايش را نداره .

Mahyaa
یک شنبه 13 تیر 1389, 10:11 صبح
کلاس TRegistry ، یک پراپرتی داره به نام Access

procedure WiteRegistryValue(KeyName, ValueName : string; Val : Integer; TheRootKey : HKEY);
var
Registry : TRegistry;
begin
Registry := TRegistry.Create(KEY_READ);
try
Registry.RootKey := TheRootKey;
Registry.Access := KEY_ALL_ACCESS;
Registry.OpenKey(KeyName, True);
Registry.WriteInteger(ValueName, Val);
finally
Registry.Free;
end;
end;

kamran_fa
دوشنبه 14 تیر 1389, 08:44 صبح
دوست عزيز ممنون از كدي كه گذاشتي ولي باز هم اجازه نوشتن تو كليد HKEY_LOCAL_MACHINE رو نميده

vcldeveloper
دوشنبه 14 تیر 1389, 13:05 عصر
دوست عزيز ممنون از كدي كه گذاشتي ولي باز هم اجازه نوشتن تو كليد HKEY_LOCAL_MACHINE رو نميده
نباید بده! TRegistry.Access که نمیاد سیستم امنیتی ویندوز رو براتون دور بزنه، و اجازه نوشتن در HKLM رو بهتون بده! اون خصوصیت فقط برای ویندوز تعیین میکنه که شما برای انجام کارتون با رجیستری، به چه سطحی از دسترسی نیاز دارید. ویندوز هم اختیارات کاربر مربوطه رو بررسی میکنه، اگر اجازه ویرایش HKLM رو داشت، بهش دسترسی رو میده، و اگر نداشت، جلوی اون کاربر رو میگیره.

اگر قرار بود که هر کاربر و برنامه ایی هر چی خواست، ویندوز بهش بده، که دیگه سنگ روی سنگ بند نمیشد! یک ویروس هم میومد، درخواست Write در HKLM می کرد، ویندوز هم دو دستی تقدیمش می کرد!

کاربران محدود شده اجازه نوشتن در HKLM رو در ویندوز ندارند. حتی در ویندوز ویستا و 7، حتی کاربر مدیر هم به طور عادی امکان نوشتن در این بخش از رجیستری رو نداره، و در صورت لزوم، اون برنامه باید به صورت run as administrator اجرا بشه.

شما اگر میخواید کاربری همچین دسترسی داشته باشه، باید مجوزهای اون کاربر را دستکاری کنید، و البته دستکاری در مجورهای یک کاربر خودش نیاز به دسترسی مدیریتی داره، و هر کسی نمیتونه این ها رو تغییر بده، غیر از اینکه یک Exploit در ویندوز پیدا کنه، و از طریق اون، به نوعی سیستم امنیتی ویندوز رو دور بزنه (مثل کاری که یک ویروس ممکنه انجام بده).

برنامه شما اگر نیاز داره که تنظیماتی از تنظیمات سیستم را برای کل کاربران سیستم تغییر بده، باید صراحتا به کاربر اعلام کنه که این یک برنامه مدیریتی هست، و برای اجرا، نیاز به دسترسی مدیریتی داره، و برای کاربران عادی نوشته نشده. اگر هم صرفا از HKLM برای نگهداری برخی از تنظیمات برنامه خودتان استفاده می کنید، این کار اشتباه هست، و باید برای این امور، از HKCU استفاده کنید.

Mahyaa
سه شنبه 15 تیر 1389, 09:11 صبح
دوست عزيز ممنون از كدي كه گذاشتي ولي باز هم اجازه نوشتن تو كليد HKEY_LOCAL_MACHINE رو نميده

من متوجه نشدم که شما گفتید یوزر معمولی.
فکر کردم مساله باید راجع به ویستا و 7 باشه که با Administrator نمیتونید در اون کلید بنویسید.