| Re: Anwendungsordner freigeben | |
 |
| Autor: Fritz |
| Datum: 26.09.04 09:14 |
|
Hallo Steve
Mann, ich hoffe, du hast keine schlaflosen Nächte wegen dieser Geschichte. Aber inzwischen bin ich wirklich langsam zur Überzeugung gelangt, dass es offenbar einfach nicht geht. Hab mich auch in anderen Foren umgesehen und stundenlang gegoogelt, Resultat = 0. Nirgendwo kann ich einen Parameter entdecken, der diesen Schreibschutz anspricht. Und keiner der grossen Gurus hat auch nur einen Mucks dazu gemacht. Seltsam, wirklich seltsam.
Was ich inzwischen geschafft habe, ist, stattdessen unter W98/Me einfach das Dateieigenschaften-Dialogfeld des Explorers aufzurufen, so dass der Benutzer immerhin nicht weit suchen muss und einfach mit 3 Klicks dann die Freigabe setzen kann. Ist auch nicht ganz einfach, ich musste den Code aus VB6 importieren (wenigstens das geht mit VB2003):
Private Structure SHELLEXECUTEINFO
Dim cbSize As Integer
Dim fMask As Integer
Dim hwnd As Integer
Dim lpVerb As String
Dim lpFile As String
Dim lpParameters As String
Dim lpDirectory As String
Dim nShow As Integer
Dim hInstApp As Integer
Dim lpIDList As Integer
Dim lpClass As String
Dim hkeyClass As Integer
Dim dwHotKey As Integer
Dim hIcon As Integer
Dim hProcess As Integer
End Structure
Private Declare Function GetDesktopWindow Lib "user32" () As Integer
Private Declare Function ShellExecuteEx Lib "shell32.dll" (ByRef SEI As SHELLEXECUTEINFO) As Integer
Funktion Dateieigenschaften:
Public Sub ShellFileProperties(ByRef FileName As String, Optional ByVal OwnerhWnd As Integer = 0)
Dim nSEI As SHELLEXECUTEINFO
With nSEI
.cbSize = Len(nSEI)
.fMask = SEE_MASK_FLAG_NO_UI Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_NOCLOSEPROCESS
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = FileName
End With
If ShellExecuteEx(nSEI) = 0 Then
Err.Raise(Err.LastDllError, "ShowProps")
End If
End Sub
'Und der Aufruf, in einem Button:
Dim pfad As String = IO.Directory.GetCurrentDirectory()
ShellFileProperties(pfad)
Statt "properties" wär natürlich noch besser, wenn man gleich auf die Registerkarte "Freigabe" kame, dann könnte ich die Freigabe mit der WsHShell setzen und der Benutzer müsste nur noch den Schreibschutz aufheben. Hab aber noch nicht rausgefunden wie ich direkt dahin komme. Dann wäre es nur noch 1 Klick.
Sieht etwas seltsam aus im Programmablauf, aber es scheint der einzige gangbare Weg zu sein.
Inzwischen bin ich schon bei einem weiteren trickigen Problem, doch dazu werde ich einen neuen Thread starten. Es geht darum, die Security für das Intranet auf Fulltrust zu setzen, damit die Clients externe Programme ausführen dürfen. Ist auch wieder sowas, wo man nirgendwo konkrete Hinweise findet.
Also wenn du Lust hast, weiter zu suchen, bitteschön, wär natürlich wirklich eleganter, wenn es eine Lösung gäbe. Aber sonst würde ich mich mit dem aktuellen Stand eben zufrieden geben.
Schönen Gruss und Dank
Fritz |
 |