Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[.NET 4.0] Win32 API: SetFileShortName und nötige Privilegien

14 views
Skip to first unread message

Christian Treffler

unread,
Aug 30, 2012, 3:00:45 PM8/30/12
to
Hi,

ich m嚙箱hte in einem Programm (.net 4.0, C#) auf die kurzen Dateinamen
(8.3-Dateinamen, Short Filenames) zugreifen. .net bietet daf嚙緝 keine
Methoden, die L嚙編ung ist Zugriff 嚙箭er die Win32-API.

Den Dateinamen lesen kann ich ohne Probleme, aber ihn ver嚙緯dern stellt
sich als schwierig heraus. Ich habe lange gegoogelt und eine Menge Infos
gefunden [1].
Die Hauptinfo ist, dass ich als Administrator angemeldet sein und das
SE_RESTORE_NAME Privileg setzen muss. Ich habe eine Menge an
Beispielcode gefunden und daraus eine Methode gestrickt, die
funktionieren sollte. Sie funktioniert jedoch nicht.

Der Code ist hier:
http://pastebin.com/1WRKgHL9

Ich habe bei jedem Zugriff auf die Win32 API den Errorcode abgefragt und
mein Program entsprechend kommentiert. Die ersten beiden Zugriffe
CreateFile und AdjustTokenPrivileges werden erfolgreich ausgef嚙篁rt. Beim
eigentlichen SetFileShortName erhalte ich jedoch den Fehlercode "A
required privilege is not held by the client".

Das bedeutet, dass entweder das Setzen des SE_RESTORE_NAME Privilegs
nicht funktioniert hat oder ein weiteres Privileg fehlt.

Kann hier jemand weiter helfen?

TIA,
Christian

X-Post nach de.comp.os.ms-windows.programmer, weil ich nicht weis, ob
das ein API-Problem ist,
FUp2 de.comp.lang.dotnet.misc, weil es in C# gel嚙編t werden soll.

[1]
http://tinyurl.com/95vdrt7
http://www.codeproject.com/Questions/325630/Setting-the-Short-Name-of-file
http://tinyurl.com/9b6eldf
0 new messages