설치 중에 서비스 계정에서 파일을 쓸 수 있도록 'Logs'디렉토리의 사용 권한을 변경해야합니다. 서비스 기능을 수행하는 데 필요한 최소 권한 (일반적으로 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);
}
이 코드는 ProjectInstaller 클래스의 초기화를 호출해야 하는가? – James
이것에 대한 설치 util 클래스를 만들고 서비스 설치 관리자를 추가하십시오. http://msdn.microsoft.com/en-us/library/system.configuration.install.installer.aspx –
Installer 클래스 내에서 특정 설치 폴더의 경로? – James