我正在做一个项目,我必须生成一些日志[这是文本文件]。我通过线程生成日志[线程是必不可少的]到应用程序数据文件夹。但vista不会给我访问并抛出异常“访问被拒绝”。我很困惑。任何建议都会非常有帮助。感谢。
答案 0 :(得分:3)
以管理员身份运行您的应用程序,或完全控制Users
组的文件夹(这是不安全的)。
您还可以在申请中强制UAC elevation。
答案 1 :(得分:2)
使用以下方法获取应用程序数据的路径吗?
System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
通常,该目录可由本地用户写入,但 Web应用程序的情况并非如此。
为了回复您的上述评论,您可以通过UAC以编程方式要求管理员权限。在您的解决方案中创建app.manifest并将以下代码放入其中
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
希望对你有所帮助。
[编辑] Ruel在我写作时刚刚添加了UAC链接。我的答案是重复;) 感谢他
答案 2 :(得分:1)
当您说“应用程序数据文件夹”时,是指您安装应用程序的位置,还是指操作系统认为“应用程序数据文件夹”的位置?
static void Main(string[] args)
{
string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyCompany\MyApp");
Directory.CreateDirectory(folder);
using (StreamWriter writer = new StreamWriter(Path.Combine(folder, "app.log"), false))
{
writer.WriteLine("Logged.");
}
}