2013-11-20 4 views
0

Я создал приложение C#, не имея в виду, что всякая отладка была выполнена с использованием прав администратора, как я всегда использую в Windows.Установленное приложение не имеет прав на запись в любом месте

Теперь, когда я установил мое приложение с помощью WiX для создания установщика .MSI, приложение не имеет разрешений на запись в appdata, C: \ tmp или тому подобное.

Мое приложение должно написать временные файлы где-то в файловой системе, как я могу достичь этого, не требуя прав администратора для моего приложения? Приложение не делает ничего, что должно требовать повышения уровня администратора.

+0

Каковы точные пути, на которые вы пишете? Вы можете писать только в каталоги для каждого пользователя. – SLaks

+1

[This] (http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename (v = vs.110) .aspx), может быть? – pbondoer

+0

@slaks% appdata% \ myApp (созданный wix с разрешениями), c: \ temp, mydocs ... – chwi

ответ

0

Поскольку я нужен только временный файл для чтения и записи с, я был в состоянии использовать Windows API, чтобы получить ТЕМП-файл для моего приложения

string tempFile = Path.GetTempFileName(); 

Теперь я мог читать и писать на путь от tempFile по желанию. Отмечено, что этот файл удаляется при выходе, а новый создается для каждого вызова до Path.GetTempFileName()

0

Попробуйте использовать Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData). Он всегда должен быть доступен для вашего приложения.

Вы можете попытаться найти временный каталог с System.IO.Path.GetTempPath().

Если это не сработает, вы можете попробовать найти несистемный раздел и создать там скрытую папку.

+0

Как уже говорилось, у меня также нет доступа: S – chwi

+0

Вы можете попробовать найти временную папку или создать скрытую папку на другом разделе. –

+0

Это просто неправильно, я думаю, создавая папки без знания пользователей. – chwi

Смежные вопросы