Проект API GetTempPath выдает ошибку AccessViolationException - C#
Формулировка задачи:
Приветствую
, пытаюсь определить путь к временной папке Windows через API GetTempPath. Вот наработки, но постоянно выдает ошибку:AccessViolationException
с указанием на запуск формы. Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.Visual Studio 2010.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsFormsApplication6 { public partial class Form1 : Form { [DllImport("kernel32.dll")] static extern int GetTempPath(uint nBufferLength, out StringBuilder lpBuffer); public Form1() { InitializeComponent(); } private void button1_Click_1(object sender, EventArgs e) { uint d = 4096; StringBuilder StrBuild = new StringBuilder(); GetTempPath(d, out StrBuild); textBox1.Text = StrBuild.ToString(); textBox2.Text = System.IO.Path.GetTempPath(); //чтобы проверить путь, через него, к сожалению, нельзя } } }
Решение задачи: «Проект API GetTempPath выдает ошибку AccessViolationException»
textual
Листинг программы
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] static extern Int32 GetTempPath(Int32 nBufferLength, [Out] StringBuilder lpBuffer); StringBuilder buffer = new StringBuilder(261); if (GetTempPath(buffer.Capacity, buffer) == 0) throw new Win32Exception(Marshal.GetLastWin32Error());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д