При написании резидентных программ и сервисов, возникает потребность в автоматическом запуске программы при загрузке виндовс. Каждый мало-мальски знакомый с этой операционной системой пользователь скажет вам, что для решения этой проблемы нужно воспользоваться реестром.
Вот с помощью столь не хитрого кода я записываю программу в реестр для автостарта:
1:
2: // Alexandr Lysy
3: using System.Reflection;
4: using Microsoft.Win32;
5: namespace Utils.AppAutostart
6: {
7: public class
8: AutoStart
9: {
10:
11: public static void Enableautostart(string
12: progname)
13:
14: {
15:
16: RegistryKey key =
17: Registry.CurrentUser.CreateSubKey("Software\\microsoft\\windows\\currentversion\\run");
18:
19: key.SetValue(progname,
20: Assembly.GetEntryAssembly().Location);
21:
22: }
23: public static void
24: Enableautostart(string progname, string
25: path)
26:
27: {
28:
29: RegistryKey key =
30: Registry.CurrentUser.CreateSubKey("Software\\microsoft\\windows\\currentversion\\run");
31:
32: key.SetValue(progname, path);
33:
34: }
35: public static bool
36: IsEnabled(string progname)
37:
38: {
39:
40: RegistryKey key =
41: Registry.CurrentUser.OpenSubKey("Software\\microsoft\\windows\\currentversion\\run",
42: true);
43: if
44: (key.GetValue(progname) != null) return
45: true;
46:
47: return false;
48: }
49: public static void
50: Disableautostart(string progname)
51:
52: {
53:
54: RegistryKey key =
55: Registry.CurrentUser.OpenSubKey("Software\\microsoft\\windows\\currentversion\\run",
56: true);
57:
58: key.DeleteValue(progname);
59:
60: }
61: }
62: }
Собственно использование: Enableautostart(“myProg”); Проверено на вин ХР.
Вроде не чего сложного программа, как и должна, запускается при старте виндовс. Но замечена довольно не красивая проблема, приложение принципиально отказывается загружать ресурсы (картинки) как внешние, так и встроенные в ресурсы. Я пытался обойти проблему с помощью не сложной комбинации. Первой загружается программа загрузчик, задача которой запустить основную программу с полными правами. Но из этого не чего не вышло);. Так же не чего не дали пляски с безопасностью, в коде. Так что, я получил множество информации для размышления. Чем делюсь и с вами.
Уважаемые коллеги, если у вас есть решение данной проблемы, прошу поделиться им в комментариях. Заранее благодарю.
Комментариев нет:
Отправить комментарий