Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden

Diskutiere Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden im Developer Network Forum im Bereich Hardware & Software Forum; Hallo, in der Datei Kernel32.dll gibt es die Funktion CreateHardLink mit der man sog. Hardlinks erstellen kann. Irgendwie bekomme ich es aber...
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #1
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
Hallo,

in der Datei Kernel32.dll gibt es die Funktion CreateHardLink mit der man sog. Hardlinks erstellen kann. Irgendwie bekomme ich es aber nicht hin diese Funktion in einer C++ Konsolenanwendung verfügbar zu machen.
Ich habe schon folgendes gelesen:
http://de.wikipedia.org/wiki/Dynamic_Link_Library#Einbinden_von_DLLs_zur_Laufzeit
http://msdn2.microsoft.com/en-us/library/aa363860.aspx

http://de.wikipedia.org/wiki/Dynamic_Link_Library#Einbinden_von_DLLs_zur_Laufzeit

Teile davon habe ich auch bereits ausprobiert, habe es aber einfach nicht hinbekommen.

Ich hoffe ihr könnt mir sagen, wie ich diese Funktion benutzen kann.

Ich bedanke mich für eure Hilfe.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #2
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Muß die Funktion zur Laufzeit geladen werden? Sonst würde es ein einfaches
Code:
#include "windows.h"
...
BOOL rc = CreateHardLink(L"c:\\hardlink.txt", L"c:\\test.txt", NULL);
auch tun.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #3
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
Nein es muss nicht zur Laufzeit geladen werden.

Versuche ich diesen Code, beschwert sich der Compiler mit der Fehlermeldung "CreateHardLink" identifier not found.

Windows.h ist eingebunden.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Der Compiler oder der Linker? Welches BS / IDE verwendest Du? Welches SDK?
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #5
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
Der Kompiler beschwert sich. Betriebssystem WinXP Pro, IDE Visual Studio 2005 Professional 90 Tage Testversion.
Keine Ahnung welches SDK ich verwende, bewusst verwende ich keines.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #6
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Ich verwende hier VS C++ Express, Windows XP und das Windows SDK. Damit funktioniert das.
Wenn Du ohne passendes SDK auskommen willst, dann bleibt Dir nur die Variante, kernel32.dll mit LoadLibrary zu laden und Dir die gewünschte Funktion mit GetProcAddress rauszusuchen.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #7
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
Wie binde ich denn das Windows SDK ein?
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #8
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Runterladen (ist ziemlich groß, da Platform-SDK und .NET-SDK im Windows SDK vereint wurden). Dann im VS die Pfade für bin, include und lib des SDK einfügen. Das sollte ausreichen.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #9
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
Ich finde ein paar SDKs, für Vista für Server 2003 aber keins für XP.
Was mir da auch aufgefallen ist, dass es nur WebInstallationen waren, ich brauche aber einen vollständigen Download. Bei einem Download sollte auch so eine Genuine Prüfung durchgeführt werden. Ich lasse doch keine Microsoft Spyware auf meinen PC.
Ich fände es nett, wenn du mir einen Link zu einem SDK schickst, mit dem ich die Funktion verwenden kann.

Beim zur Laufzeit einbinden scheitere ich immer daran, dass das Programm zur Laufzeit abstürzt.
 
  • Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden Beitrag #10
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Das ist die ISO-Version:
http://www.microsoft.com/downloads/...22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=en

Ohne Überprüfung geht's allerdings auch nicht. Wenn Du das nicht willst, dann installier Dir ein Windows in VMWare. Dort kann MS spionieren so viel sie möchten ;-)

Oder Du nimmst die dynamische Variante:
Code:
#include "stdafx.h"
#include "windows.h"

typedef BOOL (WINAPI *CREATEHARDLINK)(LPCWSTR dst, LPCWSTR str, LPSECURITY_ATTRIBUTES sa);

int _tmain(int argc, _TCHAR* argv[])
{
    HMODULE            hModule = LoadLibrary(L"kernel32.dll");
    CREATEHARDLINK    createHardLinkProc;
    
    if (hModule != 0)
    {
        createHardLinkProc = (CREATEHARDLINK) GetProcAddress(hModule, "CreateHardLinkW");
        BOOL rc = (createHardLinkProc)(L"c:\\hardlink.txt", L"c:\\test.txt", NULL);
    }
    //BOOL rc = CreateHardLink(L"c:\\hardlink.txt", L"c:\\test.txt", NULL);

}
 
Thema:

Funktion CreateHardLink aus Kernel32.dll in C++ Programm verwenden

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben