Приветствую,
Добавляю консольную программу в автозагрузку таким способом
if ( this.autorun != 0 )
{
Microsoft.Win32.RegistryKey Key =
Microsoft
.Win32
.Registry
.CurrentUser
.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true);
Key.SetValue("имя_программы", Environment.CurrentDirectory + "\\имя_программы.exe");
Key.Close();
}
else
{
Microsoft.Win32.RegistryKey key =
Microsoft
.Win32
.Registry
.CurrentUser
.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true);
key.DeleteValue("имя_программы", false);
key.Close();
}
На Win7 работает правильно - после загрузки системы программа запускается и выполняет свою работу.
Проблема возникает на Win Vista - после загрузки системы программа запускается, но после этого кидает исключение. В логах пусто, тут закрались подозрения, сделал вывод в консоль и подозрения подтвердились - эксепшн вылетает при первой попытке записать в файл.
System.UnauthorizedAccessException: Отказано в доступе по пути "C:\Windows\system32\error.log".
error.log
- собственно, файл логов. Почему-то пытается писать в C:\Windows\system32\
. Сначала подумал на относительные пути, но при указании абсолютных - абсолютно то же самое. При ручном запуске всё в норме.
Непонятно куда копать.
@Pavel Mayorov
StreamWriter f = new StreamWriter( Environment.CurrentDirectory + "\\" + "error.log", true );
f.WriteLine( str );
f.Close();
Environment.CurrentDirectory + "/" + "error.log"
- это вы называете "абсолютным путем"?! Очевидно же, что текущая директория "по умолчанию" - C:\Windows\system32\
. Вот и файл лога оказывается там.
Где лучше разместить файл лога? Для приложений, которые ставятся в Program Files
лучше всего размещать его где-нибудь в неперемещаемом профиле пользователя. Путь к нему можно получить как Enviroment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
.
Если же приложение является portable (т.е. предназначено для запуска из директории с доступом на запись) - то хорошей отправной точкой будет AppDomain.CurrentDomain.BaseDirectory
или же Assembly.GetEntryAssembly().Location
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Допустим, имеется текст text1(text2)text2 нужно получить text1 (text2) text2
Как определить текущий DispatcherPriority из метода который выполняет Dispatcher? Если я запускаю какой–то метод через Dispatcher с приоритетом (для примера)...
После компиляции приложения, не работает отчет в reportViewer если рядом с файломexe не лежит XML файл, в котором при компиляции прописывается сервер,...