[英]Windows Worker Service Folder Permissions (C#)
快速提問是否有人碰巧知道。 我正在開發 dotnet6 中的 Worker 應用程序,該應用程序旨在成為服務,我需要在某處存儲 json 文件。 做一些研究,似乎 CommonApplicationData(ex: "C:/ProgramData") 是 go 的地方。 我的問題是,我似乎無法將文件寫入該文件夾。 我能夠創建一個目錄就好了。 但是我的訪問權限被拒絕創建實際文件。
該服務目前將在現場服務器上使用,無法回答 UAC 提示。 我不確定還能做什么。 我可以手動創建文件並訪問、編輯它。 這似乎工作正常。 但我想動態創建一個日志文件等等。
這是代碼(“它非常基本”)
var dirPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyServerService");
var path = dirPath + "\\service.json";
var doesDirExist = Directory.Exists(dirPath);
var doesFileExist = File.Exists(path);
if (!doesDirExist || !doesFileExist)
{
Directory.CreateDirectory(dirPath); //<- directory is created just fine
using var file = File.Create(dirPath); // <- fails here (access is denied)
//do stuff
}
這段代碼對我有用。 這確實是正在創建的目錄的權限問題。
public static bool CreateDirWithAccess(string fullPath, bool readOnly)
{
var dInfo = Directory.CreateDirectory(fullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), readOnly ? FileSystemRights.Read : FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.