├── LinkHelper.dsw ├── LinkHelper.sln ├── LinkHelper ├── Clean.bat ├── DragEdit.cpp ├── DragEdit.h ├── LinkHelper.cpp ├── LinkHelper.dsp ├── LinkHelper.h ├── LinkHelper.rc ├── LinkHelper.vcproj ├── LinkHelperDlg.cpp ├── LinkHelperDlg.h ├── MLink.cpp ├── MLink.h ├── StdAfx.cpp ├── StdAfx.h ├── VcHelper.h ├── res │ ├── LinkHelper.ico │ ├── LinkHelper.rc2 │ └── LinkHelper123.ico └── resource.h ├── ReadMe.md └── ScreenShot.png /LinkHelper.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "LinkHelper"=.\LinkHelper.dsp - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /LinkHelper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual Studio 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinkHelper", "LinkHelper/LinkHelper.vcproj", "{C9C0CB3E-A301-42A4-9A1D-3BD274F07668}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {C9C0CB3E-A301-42A4-9A1D-3BD274F07668}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {C9C0CB3E-A301-42A4-9A1D-3BD274F07668}.Debug|Win32.Build.0 = Debug|Win32 14 | {C9C0CB3E-A301-42A4-9A1D-3BD274F07668}.Release|Win32.ActiveCfg = Release|Win32 15 | {C9C0CB3E-A301-42A4-9A1D-3BD274F07668}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /LinkHelper/Clean.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/Clean.bat -------------------------------------------------------------------------------- /LinkHelper/DragEdit.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/DragEdit.cpp -------------------------------------------------------------------------------- /LinkHelper/DragEdit.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/DragEdit.h -------------------------------------------------------------------------------- /LinkHelper/LinkHelper.cpp: -------------------------------------------------------------------------------- 1 | // LinkHelper.cpp : Defines the class behaviors for the application. 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "LinkHelper.h" 6 | #include "LinkHelperDlg.h" 7 | 8 | #ifdef _DEBUG 9 | #define new DEBUG_NEW 10 | #undef THIS_FILE 11 | static char THIS_FILE[] = __FILE__; 12 | #endif 13 | 14 | ///////////////////////////////////////////////////////////////////////////// 15 | // CLinkHelperApp 16 | 17 | BEGIN_MESSAGE_MAP(CLinkHelperApp, CWinApp) 18 | //{{AFX_MSG_MAP(CLinkHelperApp) 19 | //}}AFX_MSG 20 | ON_COMMAND(ID_HELP, CWinApp::OnHelp) 21 | END_MESSAGE_MAP() 22 | 23 | ///////////////////////////////////////////////////////////////////////////// 24 | // CLinkHelperApp construction 25 | 26 | CLinkHelperApp::CLinkHelperApp() 27 | { 28 | } 29 | 30 | ///////////////////////////////////////////////////////////////////////////// 31 | // The one and only CLinkHelperApp object 32 | 33 | CLinkHelperApp theApp; 34 | 35 | ///////////////////////////////////////////////////////////////////////////// 36 | // CLinkHelperApp initialization 37 | 38 | BOOL CLinkHelperApp::InitInstance() 39 | { 40 | // Standard initialization 41 | 42 | CLinkHelperDlg dlg; 43 | m_pMainWnd = &dlg; 44 | int nResponse = dlg.DoModal(); 45 | if (nResponse == IDOK) 46 | { 47 | } 48 | else if (nResponse == IDCANCEL) 49 | { 50 | } 51 | 52 | // Since the dialog has been closed, return FALSE so that we exit the 53 | // application, rather than start the application's message pump. 54 | return FALSE; 55 | } 56 | -------------------------------------------------------------------------------- /LinkHelper/LinkHelper.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="LinkHelper" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Application" 0x0101 6 | 7 | CFG=LinkHelper - Win32 Debug 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "LinkHelper.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "LinkHelper.mak" CFG="LinkHelper - Win32 Debug" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "LinkHelper - Win32 Release" (based on "Win32 (x86) Application") 21 | !MESSAGE "LinkHelper - Win32 Debug" (based on "Win32 (x86) Application") 22 | !MESSAGE 23 | 24 | # Begin Project 25 | # PROP AllowPerConfigDependencies 0 26 | # PROP Scc_ProjName "" 27 | # PROP Scc_LocalPath "" 28 | CPP=cl.exe 29 | MTL=midl.exe 30 | RSC=rc.exe 31 | 32 | !IF "$(CFG)" == "LinkHelper - Win32 Release" 33 | 34 | # PROP BASE Use_MFC 6 35 | # PROP BASE Use_Debug_Libraries 0 36 | # PROP BASE Output_Dir "Release" 37 | # PROP BASE Intermediate_Dir "Release" 38 | # PROP BASE Target_Dir "" 39 | # PROP Use_MFC 6 40 | # PROP Use_Debug_Libraries 0 41 | # PROP Output_Dir "Release" 42 | # PROP Intermediate_Dir "Release" 43 | # PROP Target_Dir "" 44 | # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c 45 | # ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c 46 | # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 47 | # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 48 | # ADD BASE RSC /l 0x804 /d "NDEBUG" /d "_AFXDLL" 49 | # ADD RSC /l 0x804 /d "NDEBUG" /d "_AFXDLL" 50 | BSC32=bscmake.exe 51 | # ADD BASE BSC32 /nologo 52 | # ADD BSC32 /nologo 53 | LINK32=link.exe 54 | # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 55 | # ADD LINK32 /nologo /subsystem:windows /machine:I386 56 | 57 | !ELSEIF "$(CFG)" == "LinkHelper - Win32 Debug" 58 | 59 | # PROP BASE Use_MFC 6 60 | # PROP BASE Use_Debug_Libraries 1 61 | # PROP BASE Output_Dir "Debug" 62 | # PROP BASE Intermediate_Dir "Debug" 63 | # PROP BASE Target_Dir "" 64 | # PROP Use_MFC 6 65 | # PROP Use_Debug_Libraries 1 66 | # PROP Output_Dir "Debug" 67 | # PROP Intermediate_Dir "Debug" 68 | # PROP Target_Dir "" 69 | # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c 70 | # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR /Yu"stdafx.h" /FD /GZ /c 71 | # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 72 | # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 73 | # ADD BASE RSC /l 0x804 /d "_DEBUG" /d "_AFXDLL" 74 | # ADD RSC /l 0x804 /d "_DEBUG" /d "_AFXDLL" 75 | BSC32=bscmake.exe 76 | # ADD BASE BSC32 /nologo 77 | # ADD BSC32 /nologo 78 | LINK32=link.exe 79 | # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 80 | # ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 81 | 82 | !ENDIF 83 | 84 | # Begin Target 85 | 86 | # Name "LinkHelper - Win32 Release" 87 | # Name "LinkHelper - Win32 Debug" 88 | # Begin Group "Source Files" 89 | 90 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 91 | # Begin Source File 92 | 93 | SOURCE=.\DragEdit.cpp 94 | # End Source File 95 | # Begin Source File 96 | 97 | SOURCE=.\LinkHelper.cpp 98 | # End Source File 99 | # Begin Source File 100 | 101 | SOURCE=.\LinkHelper.rc 102 | # End Source File 103 | # Begin Source File 104 | 105 | SOURCE=.\LinkHelperDlg.cpp 106 | # End Source File 107 | # Begin Source File 108 | 109 | SOURCE=.\MLink.cpp 110 | # End Source File 111 | # Begin Source File 112 | 113 | SOURCE=.\StdAfx.cpp 114 | # ADD CPP /Yc"stdafx.h" 115 | # End Source File 116 | # End Group 117 | # Begin Group "Header Files" 118 | 119 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 120 | # Begin Source File 121 | 122 | SOURCE=.\DragEdit.h 123 | # End Source File 124 | # Begin Source File 125 | 126 | SOURCE=.\LinkHelper.h 127 | # End Source File 128 | # Begin Source File 129 | 130 | SOURCE=.\LinkHelperDlg.h 131 | # End Source File 132 | # Begin Source File 133 | 134 | SOURCE=.\MLink.h 135 | # End Source File 136 | # Begin Source File 137 | 138 | SOURCE=.\Resource.h 139 | # End Source File 140 | # Begin Source File 141 | 142 | SOURCE=.\StdAfx.h 143 | # End Source File 144 | # Begin Source File 145 | 146 | SOURCE=.\VcHelper.h 147 | # End Source File 148 | # End Group 149 | # Begin Group "Resource Files" 150 | 151 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 152 | # Begin Source File 153 | 154 | SOURCE=.\res\LinkHelper.ico 155 | # End Source File 156 | # Begin Source File 157 | 158 | SOURCE=.\res\LinkHelper.rc2 159 | # End Source File 160 | # End Group 161 | # End Target 162 | # End Project 163 | -------------------------------------------------------------------------------- /LinkHelper/LinkHelper.h: -------------------------------------------------------------------------------- 1 | // LinkHelper.h : main header file for the LINKHELPER application 2 | // 3 | 4 | #if !defined(AFX_LINKHELPER_H__D5953CB5_BC55_4854_9F86_F3A927BA7C0A__INCLUDED_) 5 | #define AFX_LINKHELPER_H__D5953CB5_BC55_4854_9F86_F3A927BA7C0A__INCLUDED_ 6 | 7 | #if _MSC_VER > 1000 8 | #pragma once 9 | #endif // _MSC_VER > 1000 10 | 11 | #ifndef __AFXWIN_H__ 12 | #error include 'stdafx.h' before including this file for PCH 13 | #endif 14 | 15 | #include "resource.h" // main symbols 16 | 17 | ///////////////////////////////////////////////////////////////////////////// 18 | // CLinkHelperApp: 19 | // See LinkHelper.cpp for the implementation of this class 20 | // 21 | 22 | class CLinkHelperApp : public CWinApp 23 | { 24 | public: 25 | CLinkHelperApp(); 26 | 27 | // Overrides 28 | // ClassWizard generated virtual function overrides 29 | //{{AFX_VIRTUAL(CLinkHelperApp) 30 | public: 31 | virtual BOOL InitInstance(); 32 | //}}AFX_VIRTUAL 33 | 34 | // Implementation 35 | 36 | //{{AFX_MSG(CLinkHelperApp) 37 | //}}AFX_MSG 38 | DECLARE_MESSAGE_MAP() 39 | }; 40 | 41 | 42 | ///////////////////////////////////////////////////////////////////////////// 43 | 44 | //{{AFX_INSERT_LOCATION}} 45 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 46 | 47 | #endif // !defined(AFX_LINKHELPER_H__D5953CB5_BC55_4854_9F86_F3A927BA7C0A__INCLUDED_) 48 | -------------------------------------------------------------------------------- /LinkHelper/LinkHelper.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/LinkHelper.rc -------------------------------------------------------------------------------- /LinkHelper/LinkHelper.vcproj: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 29 | 32 | 35 | 38 | 41 | 50 | 68 | 71 | 76 | 79 | 92 | 95 | 98 | 101 | 106 | 109 | 112 | 115 | 116 | 126 | 129 | 132 | 135 | 138 | 147 | 164 | 167 | 172 | 175 | 187 | 190 | 193 | 196 | 201 | 204 | 207 | 210 | 211 | 212 | 213 | 214 | 215 | 219 | 222 | 225 | 229 | 230 | 233 | 237 | 238 | 239 | 242 | 245 | 249 | 250 | 253 | 257 | 258 | 259 | 262 | 265 | 269 | 270 | 273 | 277 | 278 | 279 | 282 | 285 | 289 | 290 | 293 | 297 | 298 | 299 | 302 | 305 | 309 | 310 | 313 | 317 | 318 | 319 | 322 | 325 | 330 | 331 | 334 | 339 | 340 | 341 | 342 | 346 | 349 | 350 | 353 | 354 | 357 | 358 | 361 | 362 | 365 | 366 | 369 | 370 | 373 | 374 | 375 | 379 | 382 | 383 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | -------------------------------------------------------------------------------- /LinkHelper/LinkHelperDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/LinkHelperDlg.cpp -------------------------------------------------------------------------------- /LinkHelper/LinkHelperDlg.h: -------------------------------------------------------------------------------- 1 | // LinkHelperDlg.h : header file 2 | // 3 | 4 | #if !defined(AFX_LINKHELPERDLG_H__F551E536_4C2F_45A6_93E9_A686EDA31E7D__INCLUDED_) 5 | #define AFX_LINKHELPERDLG_H__F551E536_4C2F_45A6_93E9_A686EDA31E7D__INCLUDED_ 6 | 7 | #if _MSC_VER > 1000 8 | #pragma once 9 | #endif // _MSC_VER > 1000 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // CLinkHelperDlg dialog 12 | #include "DragEdit.h" 13 | 14 | class CLinkHelperDlg : public CDialog 15 | { 16 | // Construction 17 | public: 18 | CLinkHelperDlg(CWnd* pParent = NULL); // standard constructor 19 | CToolTipCtrl* m_tipBtnCtr; 20 | // Dialog Data 21 | //{{AFX_DATA(CLinkHelperDlg) 22 | enum { IDD = IDD_LINKHELPER_DIALOG }; 23 | CDragEdit m_DragDst; 24 | CDragEdit m_DragEdit; 25 | CString m_szDst; 26 | CString m_szSrc; 27 | //}}AFX_DATA 28 | 29 | // ClassWizard generated virtual function overrides 30 | //{{AFX_VIRTUAL(CLinkHelperDlg) 31 | public: 32 | virtual BOOL PreTranslateMessage(MSG* pMsg); 33 | protected: 34 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 35 | //}}AFX_VIRTUAL 36 | 37 | // Implementation 38 | protected: 39 | HICON m_hIcon; 40 | 41 | // Generated message map functions 42 | //{{AFX_MSG(CLinkHelperDlg) 43 | virtual BOOL OnInitDialog(); 44 | afx_msg void OnPaint(); 45 | afx_msg HCURSOR OnQueryDragIcon(); 46 | virtual void OnOK(); 47 | //}}AFX_MSG 48 | DECLARE_MESSAGE_MAP() 49 | }; 50 | 51 | //{{AFX_INSERT_LOCATION}} 52 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 53 | 54 | #endif // !defined(AFX_LINKHELPERDLG_H__F551E536_4C2F_45A6_93E9_A686EDA31E7D__INCLUDED_) 55 | -------------------------------------------------------------------------------- /LinkHelper/MLink.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/MLink.cpp -------------------------------------------------------------------------------- /LinkHelper/MLink.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/MLink.h -------------------------------------------------------------------------------- /LinkHelper/StdAfx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // LinkHelper.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LinkHelper/StdAfx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #if !defined(AFX_STDAFX_H__5050EE97_06E7_4A25_92C4_2D4635859B43__INCLUDED_) 7 | #define AFX_STDAFX_H__5050EE97_06E7_4A25_92C4_2D4635859B43__INCLUDED_ 8 | 9 | #if _MSC_VER > 1000 10 | #pragma once 11 | #endif // _MSC_VER > 1000 12 | 13 | #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers 14 | 15 | #include // MFC core and standard components 16 | #include // MFC extensions 17 | #include // MFC support for Internet Explorer 4 Common Controls 18 | #ifndef _AFX_NO_AFXCMN_SUPPORT 19 | #include // MFC support for Windows Common Controls 20 | #endif // _AFX_NO_AFXCMN_SUPPORT 21 | 22 | 23 | #if defined _M_IX86 24 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 25 | #elif defined _M_IA64 26 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") 27 | #elif defined _M_X64 28 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") 29 | #else 30 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 31 | #endif 32 | 33 | //{{AFX_INSERT_LOCATION}} 34 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 35 | 36 | #endif // !defined(AFX_STDAFX_H__5050EE97_06E7_4A25_92C4_2D4635859B43__INCLUDED_) 37 | -------------------------------------------------------------------------------- /LinkHelper/VcHelper.h: -------------------------------------------------------------------------------- 1 | #ifndef CVCHELPER_H__ 2 | #define CVCHELPER_H__ 3 | 4 | #include 5 | 6 | 7 | 8 | #ifndef InitializeObjectAttributes 9 | #define InitializeObjectAttributes( p, n, a, r, s ) { \ 10 | (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ 11 | (p)->RootDirectory = r; \ 12 | (p)->Attributes = a; \ 13 | (p)->ObjectName = n; \ 14 | (p)->SecurityDescriptor = s; \ 15 | (p)->SecurityQualityOfService = NULL; \ 16 | } 17 | #endif 18 | 19 | 20 | #define OBJ_CASE_INSENSITIVE 0x00000040L 21 | 22 | #define FILE_CREATE 0x00000002 23 | #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 24 | #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 25 | 26 | #ifndef NT_SUCCESS 27 | #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) 28 | #endif 29 | 30 | #define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1) 31 | 32 | 33 | 34 | #ifndef _UNICODE_STRING 35 | typedef struct _UNICODE_STRING { 36 | USHORT Length; 37 | USHORT MaximumLength; 38 | PWSTR Buffer; 39 | } UNICODE_STRING; 40 | typedef UNICODE_STRING *PUNICODE_STRING; 41 | typedef const UNICODE_STRING *PCUNICODE_STRING; 42 | 43 | #endif // _UNICODE_STRING 44 | 45 | 46 | 47 | #ifndef _OBJECT_ATTRIBUTES 48 | typedef struct _OBJECT_ATTRIBUTES { 49 | ULONG Length; 50 | HANDLE RootDirectory; 51 | PUNICODE_STRING ObjectName; 52 | ULONG Attributes; 53 | PVOID SecurityDescriptor; 54 | PVOID SecurityQualityOfService; 55 | } OBJECT_ATTRIBUTES; 56 | typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; 57 | 58 | #endif 59 | 60 | #define _W64 61 | 62 | typedef _W64 long LONG_PTR, *PLONG_PTR; 63 | typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR; 64 | 65 | #define __int3264 __int32 66 | 67 | 68 | typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; 69 | 70 | typedef struct _IO_STATUS_BLOCK { 71 | union { 72 | NTSTATUS Status; 73 | PVOID Pointer; 74 | } DUMMYUNIONNAME; 75 | 76 | ULONG_PTR Information; 77 | } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 78 | 79 | 80 | #endif // CVCHELPER_H__ -------------------------------------------------------------------------------- /LinkHelper/res/LinkHelper.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/res/LinkHelper.ico -------------------------------------------------------------------------------- /LinkHelper/res/LinkHelper.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // LINKHELPER.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /LinkHelper/res/LinkHelper123.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/LinkHelper/res/LinkHelper123.ico -------------------------------------------------------------------------------- /LinkHelper/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Developer Studio generated include file. 3 | // Used by LinkHelper.rc 4 | // 5 | #define IDD_LINKHELPER_DIALOG 102 6 | #define IDR_MAINFRAME 128 7 | #define IDC_SRC 1000 8 | #define IDC_DST 1001 9 | 10 | // Next default values for new objects 11 | // 12 | #ifdef APSTUDIO_INVOKED 13 | #ifndef APSTUDIO_READONLY_SYMBOLS 14 | #define _APS_NEXT_RESOURCE_VALUE 129 15 | #define _APS_NEXT_COMMAND_VALUE 32771 16 | #define _APS_NEXT_CONTROL_VALUE 1002 17 | #define _APS_NEXT_SYMED_VALUE 101 18 | #endif 19 | #endif 20 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | 2 | ##### 用法 3 | 4 | ``` 5 | 1、拖入文件夹到目标的编辑框 6 | 2、在保存的编辑框填写保存的完整路径。 7 | ``` 8 | 9 | 拖入可执行程序,创建的是快捷方式, 10 | 11 | 12 | ![ScreenShot](/ScreenShot.png) 13 | 14 | 15 | 16 | 17 | #### 扩展知识 18 | 19 | ##### 硬链接 20 | 硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了 21 | 22 | ##### 限制: 23 | 24 | ``` 25 | 1、硬连接适用于在同一个卷的文件级别,不允许给目录创建硬链接; 26 | 2、硬连接是不能跨卷的,只有在同一文件系统中的文件之间才能创建链接。 27 | 硬链接在Windows系统下的应用 28 | 1.节省硬盘空间。同样的文件,只需要维护硬连接关系,不需要进行多重的拷贝,这样可以节省硬盘空间。 29 | 2.重命名文件。重命名文件并不需要打开该文件,只需改动某个目录项的内容即可。 30 | 3.删除文件。删除文件只需将相应的目录项删除,该文件的链接数减1,如果删除目录项后该文件的链接数为零,这时系统才把真正的文件从磁盘上删除。 31 | 4.文件更新。如果涉及文件更新,只需要先在WinSxS目录里面下载好一个新版本,然后修改Windows\System32下面同名文件的硬连接关系,从旧版本的硬连接指向新版本的硬连接,这样就能够快速的完成文件的更新工作,而不需要进行文件的复制,速度也会快不少。 32 | 5.卸载补丁。遇到需要补丁卸载的情况,只需要把硬连接指向改为旧版本就可以了,没有文件替换的问题。而且建立了硬连接关系的文件之间的修改是同步的,因此只要有一方被修改了,另一方也会得到修改。 33 | ``` 34 | 35 | ##### 符号链接 36 | 37 | ``` 38 | 符号链接又叫软链接,是一类特殊的文件,这个文件包含了另一个文件的路径名(绝对路径或者相对路径)。 39 | 路径可以是任意文件或目录,可以链接不同文件系统的文件。 40 | 在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作, 41 | 但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。 42 | ``` -------------------------------------------------------------------------------- /ScreenShot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanttobeno/LinkHelper/3e6d7f70027be3c8f74332aebaf376868d875f46/ScreenShot.png --------------------------------------------------------------------------------