An Unofficial Guide to the URL File Format

2nd Edition

Copyright 1998-2000 Edward L. Blake

All Rights Reserved

 

No part of this document may be reproduced in any form, mechanically or digitally, or transmitted or redistributed in any form by any means without the prior written permission from the author, Edward L. Blake. Edward Blake can be contacted at blakee@rovoscape.com

 

 

This article is an update to my previous postings on wotsit.org. This article is also better formatted as well. This will describe how the file is made on the disk, if your more interested in manipulating a URL file using the Windows IShellLink related interfaces from the source company of this file format. Then please see this link:

 

http://msdn.microsoft.com/library/psdk/shellcc/shell/Internet_Shortcuts.htm

 

Disclaimer: Please note that I am not the person, and I’m not involved with the one(s), who made the URL format. The information presented here is at most a description of how a URL file looks like and how to read it based on my experimentation and experience.

 

THE URL FORMAT

 

The classic URL file format is pretty simple; it has a format similar to an INI file:

 

Sample URL File:

_______________________________________________________

 

[InternetShortcut]

URL=http://www.someaddress.com/

WorkingDirectory=C:\WINDOWS\

ShowCommand=7

IconIndex=1

IconFile=C:\WINDOWS\SYSTEM\url.dll

Modified=20F06BA06D07BD014D

HotKey=1601

_______________________________________________________

 

The syntax of the file format is like the following:

 

[Group\Section]

Field=Value

Field=Value

.

.

 

Each line terminates with CR and LF characters, and uses ANSI as it’s character set. The files can be manipulated using basic file I\O or the GetPrivateProfileString, GetPrivateProfileSection, WritePrivateProfileSection, WritePrivateProfileSring API functions provided by Windows.


URL

The URL field is self-explanatory. It’s the address location of the page to load. It should be a fully qualifying URL with the format protocol://server/page. A URL file is not restricted to the HTTP protocol. In general, at least, whatever that can be saved as a favorite is a valid URL.

 

 

WorkingDirectory

It’s the “working folder” that your URL file uses. The working folder is possibly the folder to be set as the current folder for the application that would open the file. However Internet Explorer does not seem to be affected by this field.

Note: this setting does not seem to appear in some versions of Internet Explorer/Windows.

 

 

IconIndex

The Icon Index within the icon library specified by IconFile. In an icon library, which can be generally be either a ICO, DLL or EXE file, the icons are indexed with numbers. The first icon index starts at 0.

 

 

IconFile

Specifies the path of the icon library file. Generally the icon library can be an ICO, DLL or EXE file. The default icon library used tends to be the URL.DLL library on the system’s Windows\System directory

 

 

Modified

This field is generally the most cryptic of all the fields.

Example: Modified=20F06BA06D07BD014D

I’m not aware exactly how the date is encoded in the URL file format. However the code is clearly in a hexadecimal and is a counter, counting from a specific year, month and day. It also appears to be divided in 9 words. With some experimentation I was able to see the following:

 

Changes at a fast pace

Changes slowly

?

20

F0

6B

A0

6D

07

BD

01

4D

 

The second character of the first word also never changes: possibly the resolution of the timer does not go this deep in detail. However the count is deep enough that it’s smaller than a microsecond (or it seems). To be useful, the words above have to have it’s order reversed, possibly the ninth can be removed. Therefore:

 

20

F0

6B

A0

6D

07

BD

01

4D

Invert

Rem.

01

BD

07

6D

A0

6B

F0

20

 

 

Then convert the first 4 words (most significant) from hex to a double precision number, do the same with the 4 last hex values (least significant), and apply the following formula:

 

MostSignificant = HexToDec(“01BD076D”)

LeastSignificant = HexToDec(“A06BF020”)

BDN = MostSignificant * 4294967295 + LeastSignificant

 

The following functions can be used as a “poor man’s” date approximation tool:

 

Year = 1600 + Int(BDN / k  / 1000 / 1000 / 60 / 60 / 24 / 356.25)

Month = Int(BDN / k / 1000 / 1000 / 60 / 60 / 24 / 30 Modulus 12)

 

The k constant here is “guessed” as 10.2215, as it gave somewhat acceptably close months from 1995 to 2002. However it is far from being correct. While these functions are definitely crude, it provides a bit of insight how the Modified field was probably constructed. Creating your own functions to process these dates is recommended.

 

Recently, Mat Kramer has provided me with a possible explanation of the Modified field:

 

Received: (qmail 24998 invoked from network); 29 Aug 2000 16:24:51 -0000

Received: from unknown (HELO dsimail.datasci.com) (206.191.241.13)

  by 216.164.126.14 with SMTP; 29 Aug 2000 16:24:51 -0000

Received: by DSIMAIL with Internet Mail Service (5.5.2448.0)

  id <Q3LSH24Y>; Tue, 29 Aug 2000 12:22:29 -0500

Message-ID: <ABAA5C5621A4D3119B0B00104B0D95090CC6ED@DSIMAIL>

From: "Kramer, Mat" <MKramer@datasci.com>

To: Edward Blake

Subject: URL File Format

Date: Tue, 29 Aug 2000 12:22:19 -0500

MIME-Version: 1.0

Content-Type: text/plain;

  charset="iso-8859-1"

 

Hello,

I ran across your description of the URL format.  As far as the MODIFIED

field goes, it is probably a FILETIME time stamp.  (From MS docs, The

FILETIME structure is a 64-bit value representing the number of

100-nanosecond intervals since January 1, 1601.)

There is an MS article Q167296 that tells how to convert from this to a C

language time_t.

 

Regards,

 

- Mat Kramer <mkramer@datasci.com>

- Data Sciences International, Inc.

 

 

ShowCommand

(Nothing) - Normal

7         - Minimized

3         - Maximized

Note: this setting does not seem to appear in some versions of Internet Explorer/Windows.

 

 

HotKey

The HotKey field specifies what is the shortcut key used to automatically launch the Internet shortcut. The field uses a number to specify what hotkey is used.

 

833 – Ctrl + Shift + A

834 – Ctrl + Shift + B

835 – Ctrl + Shift + C

.

.

1345 – Shift + Alt + A

1346 – Shift + Alt + B

1347 – Shift + Alt + C

.

.

1601 – Ctrl + Alt + A

1602 – Ctrl + Alt + B

1603 – Ctrl + Alt + C

.

Refer to Appendix A for a more complete table of hotkeys.

 


EXTENDED URL FORMAT

Sometimes the URL file will provide more information when it is saved as a Favorite with the following format:

 

[DEFAULT]

BASEURL=url

 

[DOC#n(#n#n#n…)]

BASEURL=url

ORIGURL=url

 

Sample URL File with extended URL fields:

_______________________________________________________

 

[DEFAULT]

BASEURL=http://www.someaddress.com

[DOC#4#5]

BASEURL=http://www.someaddress.com/frame1.html

ORIGURL=frame1.html

[DOC#4#6]

BASEURL=http://www.someaddress.com/frame2.html

ORIGURL=frame2.html

[InternetShortcut]

URL=http://www.someaddress.com/

_______________________________________________________

 

The purpose of these extra fields is probably for the browser to figure out what HTML documents were loaded in each frame, since the main URL tends to not record the state of it’s framesets. If you navigate to a framed site, click on a frame link (which changes one of the frames), and add the page to your favorites, the altered frame’s link is preserved. When a frame is nested inside another frame, the frame’s section name has the same first numbers, and another few numbers appended, like the following:

 

Sample URL File with extended URL fields and nested frames:

_______________________________________________________

 

[DEFAULT]

BASEURL=http://www.someaddress.com

[DOC#4#5]

BASEURL=http://www.someaddress.com/frame1.html

ORIGURL=frame1.html

[DOC#4#5#4#6]

BASEURL=http://www.someaddress.com/frame1a.html

ORIGURL=frame1a.html

[DOC#4#5#4#7]

BASEURL=http://www.someaddress.com/frame1b.html

ORIGURL=frame1b.html

[DOC#4#6]

BASEURL=http://www.someaddress.com/frame2.html

ORIGURL=frame2.html

 [InternetShortcut]

URL=http://www.someaddress.com/

_______________________________________________________

 

SETTINGS NOT STORED IN THE URL FORMAT

 

Visits

“Make this page available offline”

Synchronization settings

Download Settings

Schedule Settings

 

ISSUES ABOUT USING THE URL FORMAT

It seems that Microsoft wants to hide the structure of the file format, even make it seem like it isn’t even a file at all. The URL file in the newer Microsoft Windows operating systems behaves almost like a LNK file. For example, in Microsoft Windows 2000 Professional, the URL file is treated like a shortcut, even in Windows Notepad, making the file format harder to be revealed and viewed. In order to view a file in these operating systems, use the DOS EDIT.EXE program. By typing EDIT in a command prompt window.

 

 

LINKS

 

Creating and maintaining URL files using IshellLink related Windows interfaces

http://msdn.microsoft.com/library/psdk/shellcc/shell/Internet_Shortcuts.htm

 

Information on many other file formats

http://www.wotsit.org/

 

 

Contacting the author

 

Email:

 

Primary Address:            blakee@rovoscape.com


 

APPENDIX A – HotKey Reference

 

 

C+S

S+A

C+A

C+S+A

 

C+S

S+A

C+A

C+S+A

A

833

1345

1601

1857

0

817

1329

1584

1841

B

834

1346

1602

1858

1

818

1330

1585

1842

C

835

1347

1603

1859

2

819

1331

1586

1843

D

836

1348

1604

1860

3

820

1332

1587

1844

E

837

1349

1605

1861

4

821

1333

1588

1845

F

838

1350

1606

1862

5

822

1334

1589

1846

G

839

1351

1607

1863

6

823

1335

1590

1847

H

840

1352

1608

1864

7

824

1336

1591

1848

I

841

1353

1609

1865

8

825

1337

1592

1849

J

842

1354

1610

1866

9

826

1338

1593

1850

K

843

1355

1611

1867

;

954

1466

1722

1978

L

844

1356

1612

1868

=

955

1467

1723

1979

M

845

1357

1613

1869

,

956

1468

1724

1980

N

846

1358

1614

1870

-

957

1469

1725

1981

O

847

1359

1615

1871

.

958

1470

1726

1982

P

848

1360

1616

1872

/

959

1471

1727

1983

Q

849

1361

1617

1873

`

960

1472

1728

1984

R

850

1362

1618

1874

[

987

1499

1755

2011

S

851

1363

1619

1875

\

988

1500

1756

2012

T

852

1364

1620

1876

]

989

1501

1757

2013

U

853

1365

1621

1877

990

1502

1758

2014

V

854

1366

1622

1878

 

 

 

 

 

W

855

1367

1623

1879

 

 

 

 

 

X

856

1368

1624

1880

 

 

 

 

 

Y

857

1369

1625

1881

 

 

 

 

 

Z

858

1370

1626

1882

 

 

 

 

 

 

 

None

Ctrl

Alt

Shift

C+A

S+A

C+S

C+S+A

F1

112

624

1136

368

1648

1392

880

1904

F2

113

625

1137

369

1649

1393

881

1905

F3

114

626

1138

370

1650

1394

882

1906

F4

115

627

1139

371

1651

1395

883

1907

F5

116

628

1140

372

1652

1396

884

1908

F6

117

629

1141

373

1653

1397

885

1909

F7

118

630

1142

374

1654

1398

886

1910

F8

119

631

1143

375

1655

1399

887

1911

F9

120

632

1144

376

1656

1400

888

1912

F10

121

633

1145

377

1657

1401

889

1913

F11

122

634

1146

378

1658

1402

890

1914

F12

123

635

1147

379

1659

1403

891

1915