Проект 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());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д