c++ { Winodws alle symbolischen Links auf listen

Hi.

@3Cyb3r: Dazu mußt du schon das Dateisystem rekursiv verarbeiten und für jede Datei prüfen ob es sich um einen Symlink handelt.

Gruß
 
Kennt Windows das Konzept von Links überhaupt? Das sind doch alles Dateien (ASCII) mit spezifischen Inhalt, wo das Target liegen soll, welches Icon und so weiter. Man müsste IMHO einfach nach Dateien mit der Endung *.lnk suchen.
 
Ok danke für die Antowrten. Es hat sich alles geklärt.
Eigl wollte ich auch alle DosDevices auflisten. Welche man über:

C:
NTSTATUS IoCreateSymbolicLink(
  __in  PUNICODE_STRING SymbolicLinkName,
  __in  PUNICODE_STRING DeviceName
);
erstellen kann.

Likewise, the C drive has the name \DosDevices\C:.

Naja wie gesagt hat sich alles geklärt. Mein Fehler war, dass ich ein s vergessen habe. Hier noch einmal ein rechtherzlichen Dank an Microsoft für das Umbenennen.

C:
UNICODE_STRING DeviceName;
UNICODE_STRING DosDeviceName;
NTSTATUS status;

RtlInitUnicodeString(&DeviceName, L"\\Device\\DeviceName");
RtlInitUnicodeString(&DosDeviceName, L"\\DosDevices\\DosDeviceName");
status = IoCreateSymbolicLink(&DosDeviceName, &DeviceName);
if (!NT_SUCCESS(status)) {
  /* Symbolic link creation failed.  Handle error appropriately. */
}

So früher ging das über:

C:
RtlInitUnicodeString(&DosDeviceName, L"\\DosDevice\\DosDeviceName");
Was ja auch naheliegender wäre, da bei dem Treiber Namen ja auch nicht Devices sondern Device geschrieben wird.

MFG
 
Zuletzt bearbeitet:
Zurück