Hi
In verband met beveiligingen op een schoolnetwerk in de NETHOOD folder, is het niet mogelijk een aangemaakte netwerklocatie opnieuw te benaderen na een reboot...
om dit te omzeilen ben ik op zoek gegaan naar een script dat ervoor zorgt dat er telkens een nieuwe netwerklocatie aangemaakt wordt
dit is een (bijna) werkend script:
Echter, als er al een netwerklocatie met dezelfde naam bestaat, wordt deze niet overschreven.
zie
Ik heb al geprobeerd dit op te lossen via fso.DeleteFolder en RemoveFile, maar dit mocht niet baten.
wat zie ik over het hoofd?
In verband met beveiligingen op een schoolnetwerk in de NETHOOD folder, is het niet mogelijk een aangemaakte netwerklocatie opnieuw te benaderen na een reboot...
om dit te omzeilen ben ik op zoek gegaan naar een script dat ervoor zorgt dat er telkens een nieuwe netwerklocatie aangemaakt wordt
dit is een (bijna) werkend script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
| 'Create Network Folder 'This is a fix to the original, which I found did not handle URLs 'longer than 44 characters. Option Explicit Sub CreateNetworkFolder(siteURL, siteName) Dim iRes, jRes, MT, TT, oMap Dim SH, newPath Dim objFso, f, fs, g Dim bString Dim ltrIndex Dim nameLength, urlLength, urlCutoff Dim aFile 'ForWriting (2) is the attribute to be set when writing to a file. Const ForWriting = 2 nameLength = Len(siteName) urlLength = Len(siteURL) '44 seems to be the length where we have to change a 00 to a 01. urlCutoff = 44 MT = "OK to create a My Network Places " & vbCr & "folder for " & siteURL & vbCr & "named " & siteName & "?" TT = "My Network Places" 'iRes = MsgBox(MT, vbOKCancel + vbInformation, TT ) Set objFso = CreateObject("Scripting.FileSystemObject") 'If iRes = vbCancel Then ' WScript.Quit 'End If Set SH = WScript.CreateObject("WScript.Shell") 'Create the folder under NetHood that will hold the target.lnk file newPath = SH.SpecialFolders("NetHood") & "\" & siteName If (objFso.FolderExists(newPath)) Then WScript.Echo "A Network Place with that name already exists." WScript.Quit End If objFso.CreateFolder(newPath) 'We ceate a Desktop.ini file Set fs = CreateObject("Scripting.FileSystemObject") aFile = newPath & "\Desktop.ini" Set f = fs.OpenTextFile( aFile, ForWriting, True ) 'Write the data lines that will make this a folder shortcut. f.WriteLine "[.ShellClassInfo]" f.WriteLine "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" f.WriteLine "Flags=2" f.WriteLine "ConfirmFileOp=0" f.Close 'We make Desktop.ini a system-hidden file by assigning it attribute of 6 Set fs = CreateObject("Scripting.FileSystemObject") Set g = fs.GetFile(newPath & "\Desktop.ini") g.Attributes = 6 'We make the folder read-only by assigning it 1. Set fs = CreateObject("Scripting.FileSystemObject") Set g = fs.GetFolder(newPath) g.Attributes = 1 'This is where we construct the target.lnk file byte by byte. Most of the lines are shown in 16 byte chunks, 'mostly because that is the way I saw it in the Debug utility I was using to inspect shortcut files. 'Line 1, 16 bytes bString = Chr(&H4C) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H01) & Chr(&H14) & Chr(&H02) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&HC0) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'Line 2, 16 bytes bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H46) & Chr(&H81) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'Line 3, 16 bytes bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'Line 4, 16 bytes. 13th byte is significant. bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H01) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'Line 5 13th byte is significant. bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'When I was analyzing the next byte of shortcuts I created, I foundthat it is set to various values, 'and I have no idea what they are referring to. In desperation I triedsubstituting some values. '00 caused a crash of Explorer. FF seeems to work fine for all. 'If anyone can get back to me on what this byte is or why FF works, lease contact me. bString = bString & Chr(&HFF) 'This byte is 00 if the URL is 44 characters or less, 01 if greater. If urlLength > urlCutoff Then bString = bString & Chr(&H01) Else bString = bString & Chr(&H00) End If bString = bString & Chr(&H14) & Chr(&H00) 'Line 6, 16 bytes bString = bString & Chr(&H1F) & Chr(&H50) & Chr(&HE0) & Chr(&H4F) & Chr(&HD0) & Chr(&H20) & Chr(&HEA) & Chr(&H3A) & Chr(&H69) & Chr(&H10) & Chr(&HA2) & Chr(&HD8) & Chr(&H08) & Chr(&H00) & Chr(&H2B) & Chr(&H30) 'Line 7, 16 bytes bString = bString & Chr(&H30) & Chr(&H9D) & Chr(&H14) & Chr(&H00) & Chr(&H2E) & Chr(&H00) & Chr(&H00) & Chr(&HDF) & Chr(&HEA) & Chr(&HBD) & Chr(&H65) & Chr(&HC2) & Chr(&HD0) & Chr(&H11) & Chr(&HBC) & Chr(&HED) 'Line 8, 16 bytes bString = bString & Chr(&H00) & Chr(&HA0) & Chr(&HC9) & Chr(&H0A) & Chr(&HB5) & Chr(&H0F) & Chr(&HA4) 'This byte is 00 if the URL is 44 characters or less, 01 if greater. If urlLength > urlCutoff Then bString = bString & Chr(&H01) Else bString = bString & Chr(&H00) End If bString = bString & Chr(&H4C) & Chr(&H50) & Chr(&H00) & Chr(&H01) & Chr(&H42) & Chr(&H57) & Chr(&H00) & Chr(&H00) 'Line 9, 16 bytes bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H10) & Chr(&H00) 'Line 10, 2 bytes bString = bString & Chr(&H00) & Chr(&H00) 'The next byte represents the length of the site name. bString = bString & Chr(nameLength) 'Take the site name, and write each letter, preceeded by a "00" character. For ltrIndex = 1 to nameLength bString = bString & Chr(&H00) & Mid(siteName, ltrIndex, 1) Next 'Middle line, separates the Folder Name from the URL. 3 bytes. bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) 'The next byte represents the length of the site URL. bString = bString & Chr(urlLength) 'Take the site URL, and write each letter, preceeded by a "00" character. For ltrIndex = 1 to urlLength bString = bString & Chr(&H00) & Mid(siteURL, ltrIndex, 1) Next 'Last line, 13 bytes bString = bString & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) 'Let's create the target.lnk file. Set fs = CreateObject("Scripting.FileSystemObject") aFile = newPath & "\target.lnk" 'aFile = newPath & "\vb.sss" Set f = fs.OpenTextFile(aFile, ForWriting, True) f.Write bString f.Close MT = siteName & " created." jRes = MsgBox(MT, vbOK, TT ) End Sub CreateNetworkFolder "http://www.location.com/", "Give it a Name" |
Echter, als er al een netwerklocatie met dezelfde naam bestaat, wordt deze niet overschreven.
zie
code:
1
2
3
4
| If (objFso.FolderExists(newPath)) Then WScript.Echo "A Network Place with that name already exists." WScript.Quit End If |
Ik heb al geprobeerd dit op te lossen via fso.DeleteFolder en RemoveFile, maar dit mocht niet baten.
wat zie ik over het hoofd?