PDA

View Full Version : سوال: کپی و اجرای برنامه در Startup ویندوز؟



Mosafers
سه شنبه 02 تیر 1394, 08:21 صبح
سلام من قبلا این سوال رو پرسیدم اما متاسفانه به نتیجه نرسیدم من با کد زیر میخوام برنامه اجرایی خودم را توی درایو ویندوز کپی و و مسیرس رو به Startup قرار بدم ولی یه جای کار میلگه لطفا راهنمایی کنید.


string strPath = @"C:\windows\" + Application.ProductName.ToString() + ".exe";
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microso ft\\Windows\\CurrentVersion\\Run", true);
File.Copy(Application.ExecutablePath.ToString(), strPath);
registryKey.SetValue("StartUpX", strPath);
System.Diagnostics.Process.Start(strPath);
Application.ExitThread();

hosseinbarnamenevis
سه شنبه 02 تیر 1394, 08:40 صبح
بهترین روش اینه که با برنامه ستاب سازی که کار میکنید این کار رو انجام بدید
هم راحت تره هم بهتر
و اینکه ستاب ساز خود ویژوال 2010 هم این امکان رو بهتون میده

Mosafers
چهارشنبه 03 تیر 1394, 07:18 صبح
بهترین روش اینه که با برنامه ستاب سازی که کار میکنید این کار رو انجام بدید
هم راحت تره هم بهتر
و اینکه ستاب ساز خود ویژوال 2010 هم این امکان رو بهتون میده

سلام برنامه من نیاز به نصاب نداره.
لطفا کنم رو بررسی کنید کمکم کنید با تشکر

sajaaaaad
چهارشنبه 03 تیر 1394, 07:49 صبح
منم این کدی که شما گذاشتین رو امتحان امتحان کردم و جواب نگرفتم.! منم خیلی دنبالش بودم که آخرشم نشد، بهترین کار همون ستاپ سازه یا اینکه خودت دستی برو آیکن برنامتو توی استارت آپ کپی کن :لبخند:

mehrdad1991h
چهارشنبه 03 تیر 1394, 10:06 صبح
منم این کدی که شما گذاشتین رو امتحان امتحان کردم و جواب نگرفتم.! منم خیلی دنبالش بودم که آخرشم نشد، بهترین کار همون ستاپ سازه یا اینکه خودت دستی برو آیکن برنامتو توی استارت آپ کپی کن :لبخند:

خسته نباشید !

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

sajaaaaad
چهارشنبه 03 تیر 1394, 13:56 عصر
خسته نباشید !

یکم جستجو کنید این کار را باید از طریق ریجیستری انجام بدید
البته لطفا اگر تسلط کافی روی دستورات ریجستری ندارید نرید ریجستری خودتون را بریزید بهم
اول برید یکم مطالعه کنید بعد باهاش کار کنید که براتون مشکلی پیش نیاید
موفق باشید
.
آقا مهرداد، شما اگر استفاده کردی و میدونی جواب میده یک نمونه برنامه بذار ما هم استفاده کنیم.! من دقیقا همشو مطالعه کردم، میزدم، شورت کات برناممم هم توی رجیستری میرفت ولی هیچ وقت درست کار نکرد.! توی رجیستری که میره کلا برنامه به مشکل میخوره.! اصلا کانکشنام به مشکل میخورد.! من از sqlite استفاده کرده بودم و وقتی اجراش میکردم اصلا نمیتونست دیتابیسمو پیدا کنه.! خیلی مشکل داشتم باهاش برای همین بیخیالش شدم.
ولی معمولی که اجراش میکردم خیلی راحت برنامه تحت شبکه میرفت و به دیتابیسم متصل میشد.! حتی الان که به قول معروف دستی شورتکاتشو توی پوشه استارت آپ گذاشتم بازم برنامه داره درست عمل میکنه.! ولی اون کده جواب نداد.

Mosafers
جمعه 05 تیر 1394, 16:00 عصر
سلام واقعا کسی نیست راهنمایی کنه و یا مشکل کد منو برطرف کنه.من با کد پست اول از برنامه یک نسخه کپی و مسیر برنامه کپی شده را در استارت آپ قرار میدم اما این مورد در بعضی از سیستم ها مشکل داره و اجرا نمیشه لطفا کمک کنید.

CsharpNevisi
جمعه 05 تیر 1394, 16:12 عصر
میتونی وقتی برنامه برای بار اول اجرا میشه یه شرت کات بندازی تو استارت آپ ... از این روال کمک بگیر
private void appShortcutToDesktop(string linkName) {
string deskDir = Environment.GetFolderPath(Environment.SpecialFolde r.Startup);


using (StreamWriter writer = new StreamWriter(deskDir + @"\" + linkName + ".url"))
{
string app = System.Reflection.Assembly.GetExecutingAssembly(). Location;
writer.WriteLine("[InternetShortcut]");
writer.WriteLine("URL=file:///" + app);
writer.WriteLine("IconIndex=0");
string icon = app.Replace('\\', '/');
writer.WriteLine("IconFile=" + icon);
writer.Flush();
}
}
نحوه استفاده
private void Form1_Load(object sender, EventArgs e) {
appShortcutToDesktop("AppName");
}
AppName اسم برنامه هستش .... مثلا WindowsFormsApplication1

درست سوال رو متوجه نشدم ولی برداشتم این بود ک مخوایی با روشن شدن سیستم برنامه هم اجرا بشه

Mosafers
جمعه 05 تیر 1394, 23:35 عصر
میتونی وقتی برنامه برای بار اول اجرا میشه یه شرت کات بندازی تو استارت آپ ... از این روال کمک بگیر
private void appShortcutToDesktop(string linkName) {
string deskDir = Environment.GetFolderPath(Environment.SpecialFolde r.Startup);


using (StreamWriter writer = new StreamWriter(deskDir + @"\" + linkName + ".url"))
{
string app = System.Reflection.Assembly.GetExecutingAssembly(). Location;
writer.WriteLine("[InternetShortcut]");
writer.WriteLine("URL=file:///" + app);
writer.WriteLine("IconIndex=0");
string icon = app.Replace('\\', '/');
writer.WriteLine("IconFile=" + icon);
writer.Flush();
}
}
نحوه استفاده
private void Form1_Load(object sender, EventArgs e) {
appShortcutToDesktop("AppName");
}
AppName اسم برنامه هستش .... مثلا WindowsFormsApplication1

درست سوال رو متوجه نشدم ولی برداشتم این بود ک مخوایی با روشن شدن سیستم برنامه هم اجرا بشه

سوال منو درست متوجه شدید بذارید طوری دیگه صحبت کنم.
من یک فایل اجرایی (exe) دارم میخوام با اولین اجرا یک کپی از خودش در درایو c بگیره و بعد آدرس فایل اجرایی درایو c رو در رجیستری برای قرار گرفتن در Startup انجام بده.
کد خودم باید درست باشه اما روی یه سیستم جواب نداد لطفا بررسی کنید کمکم کنید بدجور کارم گیره.

اوبالیت به بو
شنبه 06 تیر 1394, 09:09 صبح
سلام

2 راه دارید:

اگر نرم افزار Setup ساز دارید که در تنظیماتش می تونید این کار رو در قسمت Resources->Registery انجام بدید.
اگر می خواید از طریق کد برنامه این کار رو بکنید:

RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
reg.SetValue("YourAppName", Application.ExecutablePath.ToString());

jaykob
یک شنبه 01 شهریور 1394, 09:31 صبح
سلام


چطور می تونم در برنامه خودم یک چک باکس قرار بدم و اگر کاربر این تیک رو زد از این به بعد برنامه در startup ویندوز بالا بیاد ؟

تشکر

ahmadreza.s
یک شنبه 01 شهریور 1394, 09:45 صبح
سلام
اين لينك (http://barnamenevis.org/showthread.php?95001-1001-%D9%86%DA%A9%D8%AA%D9%87-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE&p=1919289&viewfull=1#post1919289) رو مشاهده بفرماييد

mrcback
پنج شنبه 27 اسفند 1394, 16:57 عصر
سلام یه برنامه درست کردم وقتی تو دستکاب اجراش کردی کپی بشه تو یه مسیر خاص مثله C:\Users\data\AppData\Roaming بعد کد ریجستری هم بهش داده بشه مثلا اگه برنامه از دسکتاب حذف شد با خاموش روشن شدن سیستم دوباره اجرا بشه خودم یه کد دادم بهش startup رو بهش معرفی کردم که تو ان مسیر کپی بشه تو ریجستری هم اون مسیر بهش معرفی کردم که هر وقت سیستم خاموش روشن شد برنامه دوباره اجرا بشه از این کدها استفاده کردم

RegistryKey reg = Registry.CurrentUser.OpenSubKey("software\\microsoft\\windows\\currentversion\\run", true); reg.SetValue("chrome", Environment.SpecialFolder.Startup.ToString());
try
{
System.IO.File.Copy(Application.ExecutablePath, Environment.GetFolderPath(Environment.SpecialFolde r.Startup) + @"\" + "chrome.exe");
}
catch { }


ولی وقتی میخوام مسیر جدید بهش بدم مثلا همین C:\Users\data\AppData\Roaming کپی میشه اونجا ولی اون قسمت reg.SetValue("Myapp", Environment.SpecialFolder.ApplicationData.ToString ()); مسیر دقیقشو نمیده که اگه سیستم خاموش روشن شد دوباره اجرا بشه برنامه که اجرا میشه کپی میشه به ApplicationData تو ریجستری هم این مسیر میده ApplicationData هیمن که نباید اینطوری باشه باید مثه این باشه ApplicationData\new.exe یا C:\Users\data\AppData\Roaming\new.exe این کدهای بالا با مسیر startuo هیچ مشکلی نداره ولی این کد پایینی مشکل داره ممنون میشم مشکلشو برام حل کنید با تشکر


RegistryKey reg = Registry.CurrentUser.OpenSubKey("software\\microsoft\\windows\\currentversion\\run", true); reg.SetValue("Myapp", Environment.SpecialFolder.ApplicationData.ToString ());
try
{
System.IO.File.Copy(Application.ExecutablePath, Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData) + @"\" + "new.exe");

Mahmoud.Afrad
پنج شنبه 27 اسفند 1394, 17:28 عصر
اگر دقت کنی مسیری که در رجیستری ذخیره میکنی با مسیر فایل که کپی میکنی فرق داره، در صورتی که باید یکی باشند

string filePath = Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData) + "\\" +
Application.CompanyName + "\\" + Application.ProductName + ".exe";
DirectoryInfo folderInfo = Directory.GetParent(filePath);
try
{
if(!folderInfo.Exists)
folderInfo.Create();
System.IO.File.Copy(Application.ExecutablePath, filePath , true);
RegistryKey reg = Registry.CurrentUser.OpenSubKey("software\\microsoft\\windows\\currentversion\\run", true);
reg.SetValue(Application.ProductName, filePath);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}