Returning UNC Path associated with a local device

MSDN links:

$SAMPLECODE$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20

* Windows API
FUNCTION LocalDevice2UNC(tcLocalName)
LOCAL lcUNCBuffer, lnLength, lcLocalName, lcRemoteName
DECLARE INTEGER WNetGetConnection IN WIN32API ;
	STRING lpLocalName, STRING @ lpRemoteName, INTEGER @ lplnLength
IF TYPE('tcLocalName') <> "C" OR EMPTY(tcLocalName) 
	ERROR 11
ENDIF
lcLocalName = ALLTRIM(tcLocalName)
lcUNCBuffer = REPL(CHR(0), 1024)
lnLength = LEN(lcUNCBuffer)
IF WNetGetConnection(lcLocalName, @lcUNCBuffer, @lnLength) = 0
	lcRemoteName = LEFT(lcUNCBuffer,AT(CHR(0),lcUNCBuffer)-1)
ELSE
	lcRemoteName = ""
ENDIF
RETURN lcRemoteName

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

* WSH 
FUNCTION LocalDevice2UNC(tcLocalName)
LOCAL lcLocalName, lcRemoteName, loFso, loDrive 
IF TYPE('tcLocalName') <> "C" OR EMPTY(tcLocalName) 
    ERROR 11
ENDIF
loFso = CREATEOBJECT("Scripting.FileSystemObject")
lcLocalName = ALLTRIM(tcLocalName)
IF loFso.DriveExists(lcLocalName)
	loDrive  = loFso.GetDrive(lcLocalName)
	lcRemoteName = loDrive.ShareName
ELSE
    lcRemoteName = ""
ENDIF	
RETURN lcRemoteName

1
2
3
4
5

* Example
? LocalDevice2UNC("F:")

Comments