PDA

View Full Version : سوال: روش ایجاد پسوند اختصاصی برای فایل



papeli_83
شنبه 15 بهمن 1390, 23:56 عصر
با سلام
من می خوام برای فایلم یک پسوند ( مثلا prt. ) بسازم به این صورت که وفته داده های برناممو به صورت فایل ذخیره کردم , اولا اون فایل آیکون برناممو داشته باشه ودر ضمن وقتی روی آن دو بار کلیک کنم برنامه اصلی ران بشه همراه با مقدیری که در فایل ذخیره شده مثل برنامه word , excel و ...
برای این کار ابتدا از کد زیر استفاده برای ایجاد کلیددر ریجستری استفاده کردم اما خطا می گیره
82051

البته تو سایت های مختلف گشتم ولی هر کدوم یه روشی گفته بودن (کد پروژه بالا رو از سایت code project گرفتم http://www.codeproject.com/Articles/18594/File-Association-in-VB-NET ) , خلاصه اینکه بدجوری گیج شدم دوستان اگه لطف کنین و راهنماییم کنین ممنون می شم

mohammadriano
دوشنبه 17 بهمن 1390, 03:21 صبح
سلام
شما از ویندوز xp وارد فلدر آپشن شوید سپس داخل گذینه پسوند ها شوید
پسوند مورد نظر خودتون رو وارد کنید سپس مسیر اجرایی پسوند را به برنامه مورد نظر دهید
سپس با فشردن کلید ctrl + f پسوند مورد نظر را جستجو کنید و از فایل پیدا شده یک اکسپرت بگیرید
موفق باشی

papeli_83
دوشنبه 17 بهمن 1390, 12:22 عصر
سلام
شما از ویندوز xp وارد فلدر آپشن شوید سپس داخل گذینه پسوند ها شوید
پسوند مورد نظر خودتون رو وارد کنید سپس مسیر اجرایی پسوند را به برنامه مورد نظر دهید
سپس با فشردن کلید ctrl + f پسوند مورد نظر را جستجو کنید و از فایل پیدا شده یک اکسپرت بگیرید
موفق باشی
باسلام و با تشکر از جوابتون
فکر میکنم من سوالمو بد طرح کردم
من یه برنامه دارم که می خواد در کامپوتر کاربر نصب بشه , این روشی که شما گفتید بصورت دستی هستش من می خوام از طریق کدنویسی این کارو انجام بدم یعنی وقتی برنامم بر روی سیستم کاربر نصب شد یا اجرا شد بطور خودکار خودش این کار رو انجام بده

salehbagheri
دوشنبه 17 بهمن 1390, 12:27 عصر
البته تو سایت های مختلف گشتم ولی هر کدوم یه روشی گفته بودن (کد پروژه بالا رو از سایت code project گرفتم http://www.codeproject.com/Articles/...tion-in-VB-NET (http://www.codeproject.com/Articles/18594/File-Association-in-VB-NET) ) , خلاصه اینکه بدجوری گیج شدم دوستان اگه لطف کنین و راهنماییم کنین ممنون می شم

مثال موجود در لینک، کاملا واضح و روشن هست! شما در کدام قسمت مشکل دارید؟

papeli_83
دوشنبه 17 بهمن 1390, 12:34 عصر
مثال موجود در لینک، کاملا واضح و روشن هست! شما در کدام قسمت مشکل دارید؟

با سلام
وقتی می خواد کلیدو تو ریجیستری ایجاد کنه ارور می داه ( یه فایل نمونه هم تو پست اولم گذاشتم )

salehbagheri
دوشنبه 17 بهمن 1390, 12:53 عصر
وقتی می خواد کلیدو تو ریجیستری ایجاد کنه ارور می داه ( یه فایل نمونه هم تو پست اولم گذاشتم )

خب دوست عزیز! باید هم خطا بده! اشتباهات منطقی (یا دقیقتر تایپی) در کدشما وجود داره!

یکبار دیگه با دقت کدهای خودتون و کدهای موجود در مثال رو مقایسه کنید! به اشتباهات خودتون پی میبرید!

papeli_83
دوشنبه 17 بهمن 1390, 20:22 عصر
821268212782127
خب دوست عزیز! باید هم خطا بده! اشتباهات منطقی (یا دقیقتر تایپی) در کدشما وجود داره!

یکبار دیگه با دقت کدهای خودتون و کدهای موجود در مثال رو مقایسه کنید! به اشتباهات خودتون پی میبرید!

با سلام
والا من چند بار نگاه کردم ولی چیزی دستگیرم نشد !
میشه لطف کنین و بگین اشکال کار کجاست
با تشکر

salehbagheri
دوشنبه 17 بهمن 1390, 22:38 عصر
My.Computer.Registry.ClassesRoot.CreateSubKey(".hello").SetValue("", "Hello", RegistryValueKind.String)
My.Computer.Registry.ClassesRoot.CreateSubKey("Hello\shell\open\command").SetValue("", Application.ExecutablePath & " ""%l"" ", RegistryValueKind.String)

در کد بالا که در مثال آورده شده، مواردی که U کردم با کد شما مطابقت نداره و همین امر باعث ایجاد خطا شده! مخصوصاً رشته %1 !

mohammadriano
سه شنبه 18 بهمن 1390, 00:29 صبح
باسلام و با تشکر از جوابتون
فکر میکنم من سوالمو بد طرح کردم
من یه برنامه دارم که می خواد در کامپوتر کاربر نصب بشه , این روشی که شما گفتید بصورت دستی هستش من می خوام از طریق کدنویسی این کارو انجام بدم یعنی وقتی برنامم بر روی سیستم کاربر نصب شد یا اجرا شد بطور خودکار خودش این کار رو انجام بده
خب دوست عزیز با اجرا کردن اکسپورت گرفته شده از رجیستری در زمانی که برنامه شما روی سیستم هدف در حال نصب شدن است مشکل حل میشه
دیگه به دستی و اتوماتیک چه ربطی داره؟!!

papeli_83
سه شنبه 18 بهمن 1390, 02:18 صبح
My.Computer.Registry.ClassesRoot.CreateSubKey(".hello").SetValue("", "Hello", RegistryValueKind.String)
My.Computer.Registry.ClassesRoot.CreateSubKey("Hello\shell\open\command").SetValue("", Application.ExecutablePath & " ""%l"" ", RegistryValueKind.String)

در کد بالا که در مثال آورده شده، مواردی که U کردم با کد شما مطابقت نداره و همین امر باعث ایجاد خطا شده! مخصوصاً رشته %1 !

با سلا م
من تغیرات شمارو انجام دادم ولی باز هم تو خط اول ارور می گیره
82146

salehbagheri
سه شنبه 18 بهمن 1390, 09:37 صبح
با سلا م
من تغیرات شمارو انجام دادم ولی باز هم تو خط اول ارور می گیره

شما اگه متن خطا رو از همون اول قرار میدادید خیلی زودتر نتیجه میگرفتید!

این خطا هیچ ربطی به اشکالات کد شما نداره! بلکه بخاطر عدم مجوز برنامه VB یا اکانت ویندوز شما برای دسترسی به RegEdit بوجود اومده!

شما باید با اکانت Admin وارد شوید و همچنین هنگام اجرای برنامه VisualStudio ابتدا روی آیکن برنامه، کلیک راست کنید و سپس Run As Admin رو بزنید!

اگر با انجام این دو مرحله خطای فوق برطرف نشد، چک کنید ببینید که آیا RegEdit در قسمت Group Policy فعال هست یا خیر!

Hossis
چهارشنبه 19 بهمن 1390, 15:34 عصر
فکر کنم نباید بعد از Setvalue آرگومان اول خالی باشه
تو قسمت قبلش هم نقطه رو قبل از hello بردارید
شاید درست بشه

m2_farzan
چهارشنبه 19 بهمن 1390, 17:16 عصر
بذارید از اول توضیح بدم.

1- یه پسوند خاص لازم نیست حتما رمز گذاری شده باشه. مثلا شما اگه یه فایل نوتپد ایچاد کنید و پسوند فایل ایجاد شده را از txt به fftx (یک پسوند فرضی) تغییر بدید، یه پسوند جدید ایجاد کرده اید. البته میتونید با الگوریتم خودتون محتویات فایل رو یه جورایی code کنید.

2- برای نوشتن و خواندن از یک پسوند لازم نیست کار خاصی انجام بدید. از همون متد System.IO.File.ReadAllText و System.IO.File.WriteAllText استفاده کنید و اگر اون رو با الگوریتم خاصی code کردید، با یک الگوریتم decode اطلاعات رو آماده کنید.

// یه خورده از بحث اصلی دور شدیم.

3- باید موقع نصب برنامه، پسوندتون رو رجیستر کنید. اگه برای ساختن برنامه ی نصب از Advanced Installer و یا InstallShield استفاده میکنید، این کار خیلی ساده ست و میتونید داخل همونجایی که ستاپ رو میسازید بهش بگید که پسوند رو هم براتون ثبت کنه. اگر هم از نرم افزار های فوق یا نرم افزار های مشابه ستاپ سازی استفاده نمی کنید، باید این کار رو از طریق رجیستری انجام بدید که با یک سرچ ساده در گوگل نحوه ی این کار رو میفهمید.

4- حالا وقتی فایلی به وسیله ی برنامه شما باز میشه، در واقع آدرس اون فایل به عنوان آرگومان به برنامه شما فرستاده میشه که باید از اون استفاده کنید.

// امیدوارم مطلب رو گرفته باشید.