This forum uses cookies. Click X button to hide this message. What is stored? / Privacy
Total Commander Forum Index Total Commander
Forum - Public Discussion and Support
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

NTLinks + NTLinksMaker: NTFS links creation and information
Goto page 1, 2, 3 ... 12, 13, 14  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Plugins and addons: devel.+support (English) Printable version
View previous topic :: View next topic  
Author Message
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Tue Aug 25, 2009 8:03 pm    Post subject: NTLinks + NTLinksMaker: NTFS links creation and information Reply with quote

I had wrote my own plugin for NTFS hardlinks and reparse points, it correctly processes symbolic links for files/folders and also has field for file index (useful for searching all hardlinks of particular file).

Also tool for NTFS links creation was finally released!

Last version information

Version no: 1.6 32/64
URL: NTLinks at wincmd.ru / NTLinks at totalcmd.net

Version no: 1.1 32/64
URL: NTLinksMaker at wincmd.ru / NTLinksMaker at totalcmd.net

Requirements: operating system Windows 2000 and above, Total Commander Smile


NTLinks features:

+ gets file indexes and number and paths of hardlinks
+ gets target path for reparse points and real path for all objects
+ supports symbolic links (new in Windows Vista/7)
+ get/set target path for symbolic links and junctions
+ fastest hardlinks comparison (within same volume)
+ Unicode and long paths support

NTLinksMaker features:

+ supports junctions, hardlinks and symbolic links
+ allows duplicating first levels with regular folders
+ allows keeping directory structure (for objects from multiple dirs)
+ elevation request when admin rights needed
+ supports silent mode w/o any windows
+ Unicode and long paths support



NTLinks plugin provides following content fields:

HLNK_Count - returns hard copies number for file. Each copy has its place in some directory within one partition. Changing file's contents or attributes (incl. permissions) reflects on all its hard copies because they have common file contents.

HLNK_Index - returns string that represents 64-bit integer index of file, this index is unique within partition for each file. All hard copies will have the same index, and you may find all copies by specifying this index (or only part of it, because index returned as string).

Obj_Type - returns "Dir" for usual folder, "File" for usual file and some of reparse point type for reparse points. If type of reparse point can't be determined (i.e. because of permissions), value "RP: N/A" returned.

RP_Target - returns target file/folder/drive reparse point points to. For volume mount points it's a path to drive root, for symlink it is a path to file (relative or absolute), for symlinkD and junction it is a path to folder. For other reparse points currently no target return (if you have info about it - that's good). If you're running Windows NT5 (2000), admin rights are required to correctly resolve first mount point if volume has no letter assigned (current mount point path returned else - it is a valid mount point too). You may choose between natural and symbolic output mode - in symbolic mode volume names for mount points are not resolved to mounted path names.

RP_IsValid - returns Yes when target folder/file/drive of reparse point is available (for example, if it's a mount point of DVD drive, target will be valid when correct CD/DVD is inserted, for junctions/symlinks path is valid if target object don't moved/deleted) or No otherwise.

Obj_RealPath - returns real path of FS object, expanding all reparse points (max 256 expands to avoid endless loops). You may choose between natural and symbolic output mode, as for RP_Target field.

Obj_RealSize - returns real size of a file (in case of symbolic link).

HLNK_Paths - returns paths of first 10 hard copies of the file, if available (all or N-th one, requires Windows Vista).

You may choose between natural and symbolic output mode - in symbolic mode volume names for mount points are not resolved to mounted path names, also relative targets of symbolic links are left as is. Each field return Unicode string for TC 7.50 and newer, and ANSI string for old TC versions.


Last edited by MVV on Mon Nov 14, 2016 6:42 am; edited 45 times in total
Back to top
View user's profile Send private message Send e-mail
Alextp
Power Member
Power Member


Joined: 16 Aug 2004
Posts: 2321
Location: Russian Federation

PostPosted: Wed Aug 26, 2009 1:54 am    Post subject: Reply with quote

Do you put it to totalcmd.net?
_________________
UniViewer - Log Viewer - CudaLister
Back to top
View user's profile Send private message Visit poster's website
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Wed Aug 26, 2009 3:12 am    Post subject: Reply with quote

Alextp wrote:
Do you put it to totalcmd.net?

Currently I had only finished its testing and trouble-correction (like one that mount point info function returns volune names in form "\??\Volume{e0b03d73-84f2-11de-bcf7-806e6f6e6963}\" but GetVolumePathNamesForVolumeName function expects it in the form "\\?\Volume{e0b03d73-84f2-11de-bcf7-806e6f6e6963}\" - I had wasted not one hour while understood why it returns error Confused)...
So, currently this link is the one place where my plugin may be downloaded. If you like it, I'll think about putting it to totalcmd.net, wincmd.ru. Or to add some new reparse points detection (currently it gets targets for symlink, symlinkd, mount point, and junction).
_________________
TCFS2 + TCFS2Tools: Full-screen mode for TC etc (forum)
TOTALCMD.NET: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message Send e-mail
Alextp
Power Member
Power Member


Joined: 16 Aug 2004
Posts: 2321
Location: Russian Federation

PostPosted: Wed Aug 26, 2009 3:50 am    Post subject: Reply with quote

Ok, thanks. Hope you ll fix that issues.
Back to top
View user's profile Send private message Visit poster's website
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Wed Aug 26, 2009 4:16 am    Post subject: Reply with quote

Alextp wrote:
Ok, thanks. Hope you ll fix that issues.

Currently I have no issues to fix or add. Smile
Plugin supports all NL_Info reparse points plus some new feafures - symlinks and file indexes. There only one field for object type - it returns values "File", "Dir" or some reparse point type acronym. If you need to hide "File" or "Dir" strings, you may edit lng-file.
_________________
TCFS2 + TCFS2Tools: Full-screen mode for TC etc (forum)
TOTALCMD.NET: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message Send e-mail
Balderstrom
Power Member
Power Member


Joined: 11 Oct 2005
Posts: 2148

PostPosted: Wed Aug 26, 2009 9:37 pm    Post subject: Reply with quote

@MVV Know of any reason that your plugin would fail to install on Win2K? Error:
Quote:
Error loading plugin file!
The plugin probably needs some DLLs missing on your system.
Back to top
View user's profile Send private message Send e-mail
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Wed Aug 26, 2009 11:45 pm    Post subject: Reply with quote

Balderstrom wrote:
@MVV Know of any reason that your plugin would fail to install on Win2K? Error:
Quote:
Error loading plugin file!
The plugin probably needs some DLLs missing on your system.

That's sad. My dll contains only clear code and standard Windows API function calls from kernel32.dll and user32.dll and no more stuff like MFC/CRT. Perhaps in Win2K's kernel32.dll some used function is missing. I'll try to find and install Win2K onto VM in order to check out this issue (or you may send me your kernel32.dll privately).
_________________
TCFS2 + TCFS2Tools: Full-screen mode for TC etc (forum)
TOTALCMD.NET: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message Send e-mail
Postkutscher
Power Member
Power Member


Joined: 31 Mar 2006
Posts: 556

PostPosted: Thu Aug 27, 2009 9:51 am    Post subject: Reply with quote

2MVV
To my knowledge GetVolumePathNamesForVolumeNameW makes the trouble here. It requires WinXP accordingly to MSDN.

http://www.techtalkz.com/microsoft-device-drivers/284040-usb-device-interface-2.html#post1123114


[added] interesting to know http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=349144
Back to top
View user's profile Send private message
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Thu Aug 27, 2009 10:40 pm    Post subject: Reply with quote

Postkutscher wrote:
2MVV
To my knowledge GetVolumePathNamesForVolumeNameW makes the trouble here. It requires WinXP accordingly to MSDN.

http://www.techtalkz.com/microsoft-device-drivers/284040-usb-device-interface-2.html#post1123114


[added] interesting to know http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=349144

Thanks, I didn't thought about such enumeration. Let me improve it:)


New version 1.0.0.30: http://files.wyw.ru/3873189 (CRC32: 3A948968)
Removed import GetVolumePathNamesForVolumeNameW (plz test it on W2K)
Added HSM2, DFSR reparse points detection (but I don't know where to see anything except junction, MP and symlinks Smile)


Last edited by MVV on Fri Aug 28, 2009 2:57 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Postkutscher
Power Member
Power Member


Joined: 31 Mar 2006
Posts: 556

PostPosted: Fri Aug 28, 2009 9:52 am    Post subject: Reply with quote

Thanks, MVV , it seems to work under W2k now.
Back to top
View user's profile Send private message
Clo
Moderator
Moderator


Joined: 02 Dec 2003
Posts: 5731
Location: Bordeaux, France

PostPosted: Fri Aug 28, 2009 2:21 pm    Post subject: Reply with quote

Moderation:
Messages split from http://ghisler.ch/board/viewtopic.php?p=182662#182662 and following.
Clo, moderator

_________________
#31505 Traducteur Français de TC French translator Aide en Français Tutoriels Français English Tutorials
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Fri Aug 28, 2009 3:01 pm    Post subject: Reply with quote

Clo wrote:

Thanks!


If someone has any suggestions, post it please Smile
_________________
TCFS2 + TCFS2Tools: Full-screen mode for TC etc (forum)
TOTALCMD.NET: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message Send e-mail
Postkutscher
Power Member
Power Member


Joined: 31 Mar 2006
Posts: 556

PostPosted: Fri Aug 28, 2009 3:12 pm    Post subject: Reply with quote

Docs, please Smile
Back to top
View user's profile Send private message
MVV
Power Member
Power Member


Joined: 03 Aug 2008
Posts: 8055
Location: Russian Federation

PostPosted: Fri Aug 28, 2009 3:36 pm    Post subject: Reply with quote

Postkutscher wrote:
Docs, please Smile

Is it really necessary? All supported fields are visible in TC dialogs.


HLNK_Index - shows string that represents 64-bit integer index of file, this index is unique inside partition. So, all hard copies will have the same index, and you may find all copies by specifying this index (or only part of it, because index returned as string).
HLNK_Count - shows ammount of hard copies of file. Each copy has its place in some folder of drive, copy can't be situated on another partition. Changing file's contents or attributes (incl. permissions) reflects on all its hard copies because they have common file contents.
Obj_Type - returns "Dir" for usual folder, "File" for usual file and some of reparse point type for reparse points. If type of reparse point can't be determined, value "RP: N/A" returned.
RP_Target - shows target file/folder/drive reparse point points to. For volume mount points it's a path to drive root, for symlink it is a path to file (relative or absolute), for symlinkD and junction it is a path to folder. For other reparse points currently no target return (if you have info about it - that's good).
RP_IsValid - boolean value, returned 1/Yes/True when target folder/file/drive of reparse point is available (for example, if it's a mount point of DVD drive, target will be valid when correct CD/DVD is inserted, for junctions/symlinks path is valid if target object don't moved/deleted).

About reparse points types I can't say nothing (except mentioned above). Smile
_________________
TCFS2 + TCFS2Tools: Full-screen mode for TC etc (forum)
TOTALCMD.NET: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message Send e-mail
Postkutscher
Power Member
Power Member


Joined: 31 Mar 2006
Posts: 556

PostPosted: Fri Aug 28, 2009 3:48 pm    Post subject: Reply with quote

Strictly speaking I would like to know about symlinks, they are the one not mentioned in NL_info docs Wink

The second thing...the validity of reparse points is dependent on permissions of TC`s user. All RPs where I have no access are marked as not valid.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Plugins and addons: devel.+support (English) All times are GMT - 6 Hours
Goto page 1, 2, 3 ... 12, 13, 14  Next
Page 1 of 14

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Imprint/Impressum: This site is maintained by Ghisler Software GmbH
Privacy Policy | Datenschutzerklärung | Politique de Confidentialité

Using phpBB © phpBB Group