[英]An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
[英]System.UnauthorizedAccessException was unhandled
我收到了拒絕訪問權限的異常。 我怎樣才能解決這個問題?
這是一個例外:
System.UnauthorizedAccessException未處理HResult = -2147024891 Message =拒絕訪問路徑'c:\\ message.txt'。
來源= mscorlib程序
這是代碼:
public static void WriteToFile(string s)
{
fs = new FileStream("c:\\message.txt",
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}
編輯:如果我以管理員身份運行vs2012,它是否有效,但有沒有辦法或理由以普通用戶身份執行?
這有效:
public static void WriteToFile(string s)
{
fs = new FileStream(@"C:\Users\KristjanBEstur\Documents\message.txt",
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
File.Delete(@"C:\Users\KristjanBEstur\Documents\message.txt");
}
雙擊app.manifest
文件,如果app.manifest
不存在右鍵單擊您的項目,添加 - >新建項目 - >應用程序清單文件然后替換此行
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
有了這個
<requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
它將以管理員權限運行您的應用程序。
如果要訪問根目錄,則可能需要以管理員模式運行項目
您可以通過將其添加到應用清單來完成此操作
<requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
我不確定所有人可能會拋出UnauthorizedAccessException
。
但有一個想法......你正試圖直接在c:
驅動器中創建一個文件,有時系統策略不允許這樣做。 為了排除故障,請嘗試在您可以訪問的其他位置創建文件,例如“ My Documents
。
您需要在訪問文件之前將File
的FileAtrributes
屬性設置為Normal
。
嘗試這個:
public static void WriteToFile(string s)
{
String path=@"c:\message.txt";
if(File.Exists(path))
{
File.SetAttributes(path, FileAttributes.Normal);
fs = new FileStream(path,
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}
else
{
MessageBox.Show("File not Found!");
}
}
只是為了添加Mujahed的答案(我還不能發表評論),如果您只是想以管理員權限運行,則不需要uiAccess="true"
。 將此選項設置為true可能會讓您感到頭痛(例如,您可能無法在調試模式下運行項目。)
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.