PDA

View Full Version : سوال: خطاي برنامه در ويستا



abulfazl
چهارشنبه 14 اسفند 1387, 19:21 عصر
سلام خدمت شما چرا اين خط در ويستا خطا مي گيرد


sys = Environ("windir") & "\system32\"


If Val(GetSetting(App.EXEName, "Settings", "q", 0)) = 0 Then
MkDir sys & "t"
End If
SaveSetting App.EXEName, "Settings", "q", 1


pasfile = FreeFile
Open sys & "t\1.dll" For Random As #pasfile
Close #pasfile
SetAttr sys & "t\1.dll", 0
SetAttr sys & "t\1.dll", vbHidden + vbSystem
SetAttr sys & "t", 0
SetAttr sys & "t", vbHidden + vbSystem
Open sys & "t\1.dll" For Random As #pasfile

اين دستور وقتي به open مي رسد خطا مي گيرد مي شه مشكل من رو حل كنيد
با تشكر:قلب:

vahidm
چهارشنبه 14 اسفند 1387, 19:26 عصر
سلام
اي كاش براي حل مشكلت پيام خطا رو مي نوشتيد
برنامه رو در ويستا نوشتيد يا اينكه در ويندوز ايكس پي نوشتيد در ويستا اجرا مي كنيد ؟
موفق باشيد

abulfazl
چهارشنبه 14 اسفند 1387, 19:40 عصر
سلام
اي كاش براي حل مشكلت پيام خطا رو مي نوشتيد
برنامه رو در ويستا نوشتيد يا اينكه در ويندوز ايكس پي نوشتيد در ويستا اجرا مي كنيد ؟
موفق باشيد

دوست عزيز برنامه رو در xp نوشته ام و در vista اجرايش مي كنم خودم تا يه حدي حدس مي زنم اون هم اينه كه در ويندوز vista درون شاخه سيستم 32 نمي توان فايلي ساخت اگه همين كد رو درون درايو يعني مثلا c البته با يك فولدر بسازيم مشكل حل ميشه اما من مي خواهم درون سيستم 32 vista هم بشه اين فولدر رو درست كنم و برنامه ام كار كنه اگه كمي صبر كني پيغام خطا رو مي نويسم

vahidm
چهارشنبه 14 اسفند 1387, 19:45 عصر
سلام
اينو كه مي گيد امتحان كرديد يا نه ؟ همين كه مي گيد اگر در درايو C بذارم كار مي كنه ؟
منتظر متن خطا هستم .

abulfazl
چهارشنبه 14 اسفند 1387, 19:59 عصر
سلام
اينو كه مي گيد امتحان كرديد يا نه ؟ همين كه مي گيد اگر در درايو C بذارم كار مي كنه ؟
منتظر متن خطا هستم .


دوست عزیز ببخشید که دیر شد اینی که گفتم رو امتحان کردم اما شرمنده خطا در open نبود خطا در ساخت فولدر t است واقعا ببخشید این هم خطا



path\file access error

abulfazl
پنج شنبه 15 اسفند 1387, 20:11 عصر
دوست عزیز ببخشید که دیر شد اینی که گفتم رو امتحان کردم اما شرمنده خطا در open نبود خطا در ساخت فولدر t است واقعا ببخشید این هم خطا




path\file access error



دوستان عزيز لطفا اگه كسي مي تونه اين خطا رو برطرف كنه من رو راهنمايي كنه لطفا
با تشكر

vahidm
پنج شنبه 15 اسفند 1387, 22:04 عصر
سلام
شما كه از توابع Api استفاده نكرديد ؟
خب چه فايلهايي رو در System32 قرار داديد ؟

abulfazl
پنج شنبه 15 اسفند 1387, 22:50 عصر
سلام
شما كه از توابع Api استفاده نكرديد ؟
خب چه فايلهايي رو در System32 قرار داديد ؟

دوست عزيز خود اين خط

sys = Environ("windir") & "\system32\"

ريشه ويندوز رو پيدا كرده و درون سيستم 32 مي رود اين خط در xp صد در صد جواب مي دهد
و نيازي به توابع api نيست

xxxxx_xxxxx
جمعه 16 اسفند 1387, 10:48 صبح
سلام فكر كنم اين دستور هموني باشه كه تو يه تاپيك ديگه نوشته بودم. آره؟!:متفکر:
شما بجاي اين دستور بيا از تابع GetWindowsDirectoryA استفاده كنيد. ببينيد جواب ميده يا نه.
اين تابع رو تو اين تاپيك به طور كامل توضيح دادم: get windows directory (http://barnamenevis.org/forum/showthread.php?t=150170)

vahidm
جمعه 16 اسفند 1387, 11:35 صبح
سلام
من فكر مي كنم شما در ويندوز Xp از يك تابع Api استفاده كرديد كه اون تابع در ويندوز ويستا تعريف شده نباشه يا اينكه با نام ديگري باشه
توابع Api‌ رو چك كنيد
شاد باشيد

abulfazl
جمعه 16 اسفند 1387, 11:55 صبح
سلام فكر كنم اين دستور هموني باشه كه تو يه تاپيك ديگه نوشته بودم. آره؟!:متفکر:
شما بجاي اين دستور بيا از تابع GetWindowsDirectoryA استفاده كنيد. ببينيد جواب ميده يا نه.
اين تابع رو تو اين تاپيك به طور كامل توضيح دادم: get windows directory (http://barnamenevis.org/forum/showthread.php?t=150170)

سلام به شما. درست اين همون سوالي است كه در يك تاپيك ديگه اي از شما پرسيدم اما اين دفعه به يك مشكل ديگه اي برخوردم من از تابع GetWindowsDirectory در ويندوزxp استفاده كردم جواب داد ولي در vista جواب نداد خط دستور ساخت فولدر در ويستا جواب نمي دهد ربطي به تابع GetWindowsDirectory ندارد چون خط اول دستور زير ريشه ويندوز رو پيدا مي كنه فقط در ساخت فولدر خطا مي گيرد يعني اين خط MkDir sys & "tell


sys = Environ("windir") & "\system32\"
If Val(GetSetting(App.EXEName, "Settings", "b", 0)) = 0 Then
MkDir sys & "tell"
End If

xxxxx_xxxxx
جمعه 16 اسفند 1387, 12:12 عصر
براي ساختن فولدر از اين تابع استفاده كنيد. ببينيد مشكل رفع ميشه يا نه...


Private Declare Function CreateDirectoryA Lib "kernel32.dll" (ByVal lpPathName As String, ByVal lpSecurityAttributes As Long) As Long
----------------------------
CreateDirectoryA "C:\windows\system32\t", 0

اگر نشد. با FSO فولدر رو بسازيد، حتماً درست ميشه

ayub_coder
شنبه 17 اسفند 1387, 01:04 صبح
عزیزان مشکل این عزیز پروگرامر در پیدا کردن مسیر نیست که بهش پیشنهاد تابع api میدید این کدش نمیتونه پوشه رو درست کنه چون ویندوز ویستا به هر کاربری اجازه ی تغییر در ساختار محتویات پوشه ی سیستم 32 نمیده اول باید ویژگی این پوشه رو به full access تغییر بدی بعد پوشتو توش بسازی... موفق باشی

vahidm
شنبه 17 اسفند 1387, 01:16 صبح
سلام
دوست عزيزم ayub_coder حرفتون رو قبول دارم و مي دونم كه ويندوز ويستا امنيت بالايي داره خب پس برنامه هايي كه نصب مي كنيم چطور پوشه مي سازند ؟ من خودم هم يكي از برنامه هام رو به راحتي در ويستا نصب كردم اين مشكل هم نداشت و اتفاقا هم در همين پوشه فايل هاي dll‌ داد . البته دوستمون بايد چك كنند و نتيجه رو بگن
يا حق

ayub_coder
شنبه 17 اسفند 1387, 01:35 صبح
اگه کسی تونست یه راه حلی برای این مشکل پیدا کنه ما رو بی خبر نذاره

abulfazl
یک شنبه 18 اسفند 1387, 13:10 عصر
سلام
من فكر مي كنم شما در ويندوز Xp از يك تابع Api استفاده كرديد كه اون تابع در ويندوز ويستا تعريف شده نباشه يا اينكه با نام ديگري باشه
توابع Api‌ رو چك كنيد
شاد باشيد


كسي اين مشكل رو بلد نيست