PDA

View Full Version : مشکل خواندن از ریجستری در ویندوز 7



mosafer_deltang
سه شنبه 10 مرداد 1391, 15:40 عصر
سلام به اساتید محترم
کد زیر در xp کار میکنه و مقدار متغیر X که تو ریجستری هست در متغیر X برنامه قرار میگیره ولی توی ویندوز 7 هیچی توی X نمیره
مشکل چیه؟
ممنون

Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Key1 := '\SOFTWARE\MyKey';
Reg.OpenKey(Key1, False);
X := Reg.ReadString('X');

BORHAN TEC
سه شنبه 10 مرداد 1391, 16:44 عصر
احتمالاً x وجود نداره و یا مقداری خالی داره.

Mask
سه شنبه 10 مرداد 1391, 17:10 عصر
میتونید از این تابع برای راحتی کار استفاده کنید.


function GetRegStr(Root:HKEY;Key,Value:string):string;
var R:TRegistry;
begin
try
R:=TRegistry.Create;
try
R.RootKey:=Root;
if R.KeyExists(Key) then
begin
R.OpenKey(Key,false);
if R.ValueExists(Value) then
Result:=R.ReadString(Value)
else
Result:='';
end else
Result:='';
finally
R.CloseKey;
R.Free
end;
except
Result:='';
end;
end;

mosafer_deltang
سه شنبه 10 مرداد 1391, 22:48 عصر
احتمالاً x وجود نداره و یا مقداری خالی داره.
نه
هم وجود داره و هم مقدار داره

سعید صابری
سه شنبه 10 مرداد 1391, 22:53 عصر
شاید هم مشکل دسترسی داشته باشه

mosafer_deltang
سه شنبه 10 مرداد 1391, 23:00 عصر
میتونید از این تابع برای راحتی کار استفاده کنید.


function GetRegStr(Root:HKEY;Key,Value:string):string;
var R:TRegistry;
begin
try
R:=TRegistry.Create;
try
R.RootKey:=Root;
if R.KeyExists(Key) then
begin
R.OpenKey(Key,false);
if R.ValueExists(Value) then
Result:=R.ReadString(Value)
else
Result:='';
end else
Result:='';
finally
R.CloseKey;
R.Free
end;
except
Result:='';
end;
end;
ممنون
این تابع هم دقیقا همون کار رو میکنه
امتحانش کردم باز هم مقدار X خالیه
عجیبه چرا تو xp مقدار رو برمیگردونه ولی توی ویندوز7 مقدارش خالیه؟

قبلا هم غیر از این مورد مشکل کار با ریجستری توی سون داشتم مثلا برای این که برنامه هنگام شروع ویندوز خودکار اجرا بشه توی مسیر زیر یک value ایجاد میکنیم و آدرس برنامه روتوش میریزیم
\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

ولی این کار هم، توی xp جواب میداد ولی توی سون جواب نمیداد

mosafer_deltang
سه شنبه 10 مرداد 1391, 23:07 عصر
شاید هم مشکل دسترسی داشته باشه

دسترسی رو برای Everyone روی full control گذاشتم باز هم فایده نداشت

Felony
سه شنبه 10 مرداد 1391, 23:09 عصر
به جای Local Machine داده هات رو در Current User بنویس و بخون ؛ برای Local Machine نیاز به دسترسی Admin هست .

mosafer_deltang
سه شنبه 10 مرداد 1391, 23:22 عصر
درست شد
ممنون