ورود

View Full Version : افزودن یک برنامه به قسمت Add/Remove در کنترل پنل



hadisalahi2
سه شنبه 21 بهمن 1393, 17:17 عصر
سلام
میخوام یک برنامه Uninstall که خودم نوشتم رو به قسمتی که گفتم اضافه کنم.
کلید مربوطه رو توی رجیستری پیدا کردم
مثلا برای یک برنامه :


HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Windows\CurrentVersion\Uninstall\AdobeCaptivateRev iewer2.5.1


البته برای برنامه های نصب شده 64 بیتی مسیرش متفاوته
به صورت دستی هم کلید ساختم و توی لیست Programs نمایش داده میشه

اما از داخل دلفی و با کد نمیتونم کلید بسازم
اینک کدهایی که نوشتم



var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_ALL_ACCESS; // --> Very Important :)
if Reg.OpenKey
('SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVe rsion\Uninstall\', True)
then
Begin
Reg.CreateKey('Hakim Asrar');
Reg.WriteString('DisplayIcon',
'F:\Windows Project\HakimProject\Forms\New Hakim_93_Ex2\HakimAsrar.exe');
Reg.WriteString('DisplayName', 'حسابداری حکیم اسرار');
Reg.WriteString('InstallLocation',
'F:\Windows Project\HakimProject\Forms\New Hakim_93_Ex2');
Reg.WriteString('UninstallString',
'F:\Windows Project\HakimProject\Forms\New Hakim_93_Ex2\HakimAsrar.exe');
End;


finally
Reg.CloseKey;
Reg.Free;
end;




نه در مسیر 64 بیتی اجازه میده نه 32 بیتی
اصلا اون OpenKey مقدار True برنمیگردونه که بخوام کلید بسازم

به نظرتون مشکل کجاست؟

بهروز عباسی
سه شنبه 21 بهمن 1393, 19:48 عصر
سلام
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_ALL_ACCESS; // --> Very Important :)
Run as admin !

BORHAN TEC
سه شنبه 21 بهمن 1393, 23:05 عصر
با سلام،
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_ALL_ACCESS; // --> Very Important :)
فکر می کنم که این دو خط رو از تابعی که قبلاً برای بدست آوردن نسخه ویندوز قرار داده بودم استخراج کردین! :لبخند: این دو خط بدون run as admin میتونه به برنامه این قابلیت رو بده که یک value رو از هر کجای رجیستری بخونید ولی اگر قصد شما نوشتن در بخشهایی از رجیستری مثل شاخه HKLM باشه، همانطور که بهروز گفت برنامه باید به صورت Run as admin اجرا بشه و یا اینکه از یک manifest خاص که قبلاً بارها در همین سایت مورد بحث قرار گرفته استفاده کنید.

hadisalahi2
چهارشنبه 22 بهمن 1393, 11:13 صبح
فکر می کنم که این دو خط رو از تابعی که قبلاً برای بدست آوردن نسخه ویندوز قرار داده بودم استخراج کردین!
آره شاهین جان دقیقا :لبخند:

حالا با وجود
Run as admin مقادیر ایجاد نمیشه
یعنی کلید اصلی ایجاد میشه ، اما مقادیر ایجاد نمیشه

Mahmood_M
پنج شنبه 23 بهمن 1393, 20:34 عصر
بعد از Create کردن کلید ، باید اون رو Open کنید تا مقادیر در کلید Open شده نوشته بشن
کدی که نوشتید ، مقادیر رو در کلید زیر می نویسه :
"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVers ion\Uninstall"
نکته ی دیگه اینکه برای دادن مسیر یک فایل به ویندوز ، بهتره از دابل کوتیشن استفاده کنید ( برای جلوگیری از بروز خطا در مواقعی که بین حروف آدرس فاصله جود داره ) :
Reg.WriteString('UninstallString', '"F:\Windows Project\HakimProject\Forms\New Hakim_93_Ex2\HakimAsrar.exe"');