Проект 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());