2009-10-14 3 views
2

Я создаю службу Windows, с которой я хочу использовать NLog. Я хочу, журналы должны быть записаны в установочном месте службы говорят что-то вроде:Служба Windows с NLog

PathToInstalledService\Logs\MyLog.txt 

Это, конечно, будет требовать priveledges администратора. Поэтому мой вопрос заключается в том, что при создании установки для Сервиса какую учетную запись следует использовать в ServiceProcessInstaller. В настоящее время я использую LocalService, но эта учетная запись не имеет требуемого повышения.

Спасибо.

ответ

7

Во время установки вы должны изменить разрешения каталога «Журналы», чтобы ваша учетная запись службы записывала файлы. Используйте учетную запись с наименьшими привилегиями, необходимыми для выполнения вашей услуги, как правило, учетной записи NETWORK SERVICE.

Вы можете сделать это из установки класса на службе:

void Installer1_AfterInstall(object sender, InstallEventArgs e) 
    { 
     string myAssembly = Path.GetFullPath(this.Context.Parameters["assemblypath"]); 
     string logPath = Path.Combine(Path.GetDirectoryName(myAssembly), "Logs"); 
     Directory.CreateDirectory(logPath); 
     ReplacePermissions(logPath, WellKnownSidType.NetworkServiceSid, FileSystemRights.FullControl); 
    } 

    static void ReplacePermissions(string filepath, WellKnownSidType sidType, FileSystemRights allow) 
    { 
     FileSecurity sec = File.GetAccessControl(filepath); 
     SecurityIdentifier sid = new SecurityIdentifier(sidType, null); 
     sec.PurgeAccessRules(sid); //remove existing 
     sec.AddAccessRule(new FileSystemAccessRule(sid, allow, AccessControlType.Allow)); 
     File.SetAccessControl(filepath, sec); 
    } 
+0

Если этот код можно назвать по инициализации класса ProjectInstaller? – James

+0

Я бы создал для этого установочный класс install и добавил к нему служебный установщик: http://msdn.microsoft.com/en-us/library/system.configuration.install.installer.aspx –

+0

Любая идея, как я могу получить путь к моей конкретной папке установки из класса Installer? – James

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

  • Нет связанных вопросов^_^