>>142227Funktioniert hier ohne Probleme, muss an Python liegen.
Achtung: Zum Löschen der Datei den Dateibrauser von 7-Zip etc. nehmen.
#include <string.h>
#include <stdint.h>
#include <uchar.h>
#include <Windows.h>
int main(int argc, char ** argv)
{
static const size_t fileNameLen = 251; // Ergibt mit ".txt" einen 255-stelligen Dateinamen im lokalen Verzeichnis
char16_t prefix[] = L"\\\\?\\";
size_t prefixLen = sizeof(prefix) / sizeof(prefix[0]) - 1;
char16_t suffix[] = L".txt";
size_t suffixLen = sizeof(suffix) / sizeof(suffix[0]) - 1;
char16_t slash = '\\';
char16_t fileNameChar = u'Ä';
char16_t * currDir;
uint32_t bufferLen = GetCurrentDirectory(0, NULL);
currDir = malloc((bufferLen + 1) * sizeof(char16_t));
GetCurrentDirectory(bufferLen, currDir);
size_t currDirLen = bufferLen - 1;
char16_t * fileName = malloc((prefixLen + currDirLen + 1 + fileNameLen + suffixLen + 1) * sizeof(char16_t));
char16_t * offset = fileName;
memcpy(offset, prefix, prefixLen * sizeof(char16_t));
offset += prefixLen;
memcpy(offset, currDir, currDirLen * sizeof(char16_t));
offset += currDirLen;
*offset = slash;
offset += 1;
for(size_t i = 0u; i < fileNameLen; i++)
{
*offset = fileNameChar;
offset += 1;
}
memcpy(offset, suffix, suffixLen * sizeof(char16_t));
offset += suffixLen;
*offset = 0;
HANDLE file = CreateFile(fileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
CloseHandle(file);
free(fileName);
free(currDir);
return 0;
}