PDA

View Full Version : عدم دسترسی به فایلهای پوشه System32



hadisalahi2
چهارشنبه 28 مرداد 1388, 10:59 صبح
سلام به همگی دوستان
من یک فایل دارم که بعد از نصب برنامه داخل پوشه System32 کپی میشه.
حالا وقتی که از برنامه میخوام این فایل را باز کنم پیاغام Access Validation میده و اجازه باز کردن فایل رو نمیده.
حالا میخواستم بدونم ، این این حالت برای پوشه های ویندوزه و نمیشه به فایلهای درون این پوشه ها دسترسی داشت، یا اینکه روشی وجود داره که بشه از فایلهای توی این پوشه ها استفاده کرد.
اصلا خطایی که داده میشه به همین دلیلیه که گفتم.
در ضمن من این فایل رو در یک مسیر دیگه خیلی راحت باز میکنم و اطلاعات رو داخل مینویسم و میخونم
یا حق

Felony
چهارشنبه 28 مرداد 1388, 11:18 صبح
شما به فایلهای دیگه این مسیر دسترسی دارین ؟ مدیر سیستم هستید یا یک یوزر که دسترسیش محدود شده ؟ اصلا مطمئن هستید که فایل تو اون مسیر کپی میشه ؟

hadisalahi2
چهارشنبه 28 مرداد 1388, 12:14 عصر
در مورد مدیر بودن که با کاربر مدیر وارد سیستم میشود و یوزری هم که استفاده می کنم Administrator است.
در مورد کپی شدن فایل هم که ، حتی فایل رو به صورت دستی داخل پوشه کپی میکنم و مطمئن هستم که فایل داخل پوشه است.
و در مورد سوال سوم هم اینکه ، خیر به هیچ کدام از فایلهای درون پوشه ویندوز نمیتونم دسترسی داشته باشم. یعنی اگه فایل رو در هر مسیری از پوشه ویندوز کپی میکنم ، همین پیغام رو میده.

Felony
چهارشنبه 28 مرداد 1388, 12:27 عصر
اگر سیستم فایل درایو C شما NTFS هست یه نگاهی بندازید شاید دسترسی خواندن اطلاعات از شما گرفته شده ، جز این چیزی به ذهنم نمیرسه .

hadisalahi2
چهارشنبه 28 مرداد 1388, 12:59 عصر
بله ویندوز در درایو C قرارداده و فرمت اون هم NTFS ست ولی به کاربری که باهاش login کردم Full Control رو اختصاص دادم ولی بازهم مشکل از اونجا نیست. نه تنها پوشه System32 بلکه کلیه فولدرهای ویندوز این حالتی هستند و اجازه خودن رو نمیدن.
از دوستانی که اطلاعاتی در این زمینه دارند ، تقاضا دارم راهنمایی کنند.

hadisalahi2
چهارشنبه 28 مرداد 1388, 17:37 عصر
از دوستان تقاضا دارم به مشکل من رسیدگی کنند، خیلی خیلی واجبه.
اگه میشه یه تستی کنید ببنید برای شما هم همین طور عمل میکنه و پیغام عدم دسترسی رو میده.
ممنون میشم اگه راهنمایی کنید.
یا حق

vcldeveloper
چهارشنبه 28 مرداد 1388, 18:50 عصر
حالا وقتی که از برنامه میخوام این فایل را باز کنم پیاغام Access Validation میده و اجازه باز کردن فایل رو نمیده.
کدی که با استفاده از آن برنامه شما سعی در باز کردن فایل میکنه، چی هست؟

ویندوزی که استفاده می کنید، چی هست؟

hadisalahi2
چهارشنبه 28 مرداد 1388, 19:35 عصر
ویندوز من ایکس پی است و کدی هم که استفاده میکنم به این صورته که ابتدا، محل نصب ویندوز رو پیدا میکنم و سپس با پوشه system32 جمع میکنم .



getwindowsDirectory(PathName,n);
FileName:=pathname+'\System32\'+'LoadP.dat';
AssignFile(FileSt,FileName);
Reset(FileSt);

از متد Reste برای بازکردن فایل استفاده میکنم، چون فایل من یک فایل با ساختار رکوردی است.
البته قبل از متد Reset یک بار فایل رو با متد Rewrite ایجاد کردم.

tdkhakpur
چهارشنبه 28 مرداد 1388, 20:33 عصر
اصلاح کنید


FileName:=pathname+'\System32\'+'LoadP.dat';

به


FileName:=pathname+'\\System32\\'+'LoadP.dat';

Saeed_m_Farid
چهارشنبه 28 مرداد 1388, 22:08 عصر
اصلاح کنید


FileName:=pathname+'\System32\'+'LoadP.dat';
به


FileName:=pathname+'\\System32\\'+'LoadP.dat';

@tdkhakpur : موردی که شما بهش اشاره کردید تو سي بود نه اينجا!

اگه میشه یه تستی کنید ببنید برای شما هم همین طور عمل میکنه و پیغام عدم دسترسی رو میده.من يه تست كردم براي احتياط مشكلي نداشت و جواب داد، اينم تست ام :


//************************************************** ****************************

function GetSystemDirectory: String;
var
Len: Integer;
lpSystemDir: array [0..260] of char;
begin
Len := Windows.GetSystemDirectory(nil, 0);
Result := EmptyStr;
if Len > 0 then try
Windows.GetSystemDirectory(lpSystemDir, Len);
Result := lpSystemDir;
except raise;
end;
end;

//************************************************** ****************************

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
tmpStr: String;
begin
tmpStr := GetSystemDirectory;
if tmpStr <> EmptyStr then
tmpStr := tmpStr + '\LoadP.txt';
if FileExists(tmpStr) then begin
AssignFile(F, tmpStr);
Reset(F);
Readln(F, tmpStr);
ShowMessage('First Line: ' + tmpStr);
CloseFile(F);
end else
ShowMessage('Can''t find file: '+QuotedStr(tmpStr));
end;

//************************************************** ****************************

موفق باشيد.

tdkhakpur
چهارشنبه 28 مرداد 1388, 22:22 عصر
@tdkhakpur : مجيد دلبندم اون تو سي بود نه اينجا! دوباره عجله كردي مِستِر خاكپور!!!!

>> هاميسي سنين كي دي، تلسمه (رمز!) <<

دیدی عزیز نه کسی بهم جایزه داد و نه ازم گرفت .. ادای رئیس جمهور عربها را چرا در می آوری.(من میرم با مسئول ناسا صحبت میکنم میگم یکی را میشنایم که از من ایراد میگره واقعا آدم زرنگیه..)
آقای کشاورز این رو پاک نکنید برای شوخی گفتم موضوع اینه که این سعید ما خیلی باحاله همش افتاده دنبال ما که ببینه من کجا ایراد دارم زود اشاره بهش بکند ولی من واقعا نمیدانم چی بگم و چطوری بهشان بگویم که کجای کار برنامه نویسیه و از بازار کار چی میدونه.
سعید جون فدات شم تو و سایر دوستان از من زیاد تر میدانید و من فقط در پاسخها نظرم را میگویم انتظار لوح تقدیر یا ایراد گرفتن از کسی را هم ندارم اون ستاره ها را هم نمی گذاشتند باز برام فرقی نداشت عزیییییییییییییز ...عجبا:لبخندساده:

hadisalahi2
پنج شنبه 29 مرداد 1388, 08:50 صبح
سلام
حالا چرا باهم دعوا میکنید. دیگه خاصیت انجمن ها همینه دیگه شما که از ما استاد ترید و این چیزها رو بهتر میدونید.از هر دوی دوستان متشکرم
آقا سعید تکه کد اول درست بود و مشکلم حل شد . ممنون
ولی تکه کد دوم خطا داره و پیغام Not Enough parameters رو میده
در کل از هر دوی شما متشکرم

Saeed_m_Farid
جمعه 30 مرداد 1388, 02:55 صبح
...
ولی تکه کد دوم خطا داره و پیغام Not Enough parameters رو میده
كجا خطا ميده؟ اگه منظورتون تو رويداد كليك Button1 هست، آخه چيز پيچيده اي تو اونجا نيست كه خطا بده! ميشه بگي كجاش ايراد مي گيره؟

hadisalahi2
جمعه 30 مرداد 1388, 12:20 عصر
توی این خط خطا میده



tmpStr := GetSystemDirectory;

Saeed_m_Farid
جمعه 30 مرداد 1388, 16:02 عصر
توی این خط خطا میده



tmpStr := GetSystemDirectory;



واسه من كه ايراد نميده، شايد يه يونيتي add كردين كه همچين تابعي (البته با پارامتر ورودي) توش هست و با اون مورد پيدا ميكنه، براي اطمينان به تعريف تابع بريد (Alt+كليد جهت دار بالا) ببينيد ميره تابع نوشته شده ما يا يه يونيت ديگه!
ضمناً اگه كد زير (كه نام تابع رو عوض كردم و يكي دو خط هم همينطوري اضافه كردم!) جواب بده مطمئن باشيد كه همون حدس من درست :


//************************************************** ****************************

function GetMySysDir: String;
var
Len: Integer;
lpSystemDir: array [0..260] of char;
begin
Len := Windows.GetSystemDirectory(nil, 0);
Result := EmptyStr;
if Len > 0 then try
Windows.GetSystemDirectory(lpSystemDir, Len);
Result := lpSystemDir;
except raise;
end;
end;

//************************************************** ****************************

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
tmpStr: String;
begin
tmpStr := GetMySysDir;
if tmpStr <> EmptyStr then
tmpStr := tmpStr + '\LoadP.txt';
if FileExists(tmpStr) then begin
AssignFile(F, tmpStr);
Reset(F);
Readln(F, tmpStr);
ShowMessage('First Line: ' + tmpStr);
CloseFile(F);
end else begin
ShowMessage('Can''t find file: '
+ QuotedStr(tmpStr)
+ #13#10#9#9'Create new file!');
AssignFile(F, tmpStr);
Rewrite(F);
Writeln(F, 'New input line from code!!!');
CloseFile(F);
end;
end;

//************************************************** ****************************

hadisalahi2
جمعه 30 مرداد 1388, 19:33 عصر
با سلام . فکر کنم مشکل در همون نام تابعی بود که تعریف کرده بودی. البته من از همون قسمت اول استفاده کردم و مشکلم حل شد. ممنون از راهنماییتون