Die Berechtigung Höhe von VBScript

Wir führen Dynamics GP. Aufgrund der Art, es speichert Formulare/Berichte, die ich brauchen, um einige install-scripts, die Kopie ein .LEGEN Sie die Datei in das Programm-Verzeichnis. Dies kann manuell geschehen, aber es ist viel schneller, um nur einen Benutzer führen Sie ein installer-Skript installiert die richtigen Dateien für Sie.

Habe ich mit dem Bau eines VBScript-Installationsprogramm kopiert die erforderlichen Dateien um. Der schwierige Teil ist, dass einige clients mit Windows XP, und einige sind mit Windows 7 (oder sogar 8). UAC ist aktiviert, so dass die Berechtigungen ins Spiel kommen.

Dem Weg dorthin habe ich versucht, es zu tun ist, indem Sie blind versuchen, die Dateien zu kopieren, und wenn eine Erlaubnis Fehler erkannt wird, wird es relauncht das script mit administrator-Berechtigungen. Wo haben wir Probleme in der einige (alle?) Windows 7-Maschinen virtualisiert Datei/registry schreibt, aktiviert, so dass, wenn das Skript versucht, das kopieren von Dateien in C:\Program Files\Microsoft Dynamics\GP2010, es im hintergrund fehl, und kopiert Sie auf den Benutzer AppData\Local\VirtualStore-Verzeichnis. Dies funktioniert nicht mit GP.

Also, was ich tun müssen, haben das Skript kopieren Sie die Dateien auf C:\Program Dateien (nicht den VirtualStore-Verzeichnis), und Berechtigungen zu erhöhen, nur, wenn nötig. Wenn ich es heben auf der ganzen Linie, dadurch wird der Windows XP-Maschinen, die einfach nur pop-up mit einem kryptischen "Ausführen Als" - dialog-box, wenn das script zu starten.

Hier ist, was ich habe, so weit:

Dim WSHShell, FSO, Desktop, DesktopPath
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = CreateObject("WScript.Shell")
Desktop = WSHShell.SpecialFolders("Desktop")
DesktopPath = FSO.GetAbsolutePathName(Desktop)

'Set working directory to directory the script is in.
'This ends up being C:\Windows\System32 if the script is
'started from ShellExecute, or a link in an email, thus breaking
'relative paths.
WSHShell.CurrentDirectory = FSO.GetFile(WScript.ScriptFullName).ParentFolder

On Error Resume Next

If FSO.FolderExists("C:\Program Files (x86)") Then
    WScript.Echo "Installing 64-bit."
    FSO.CopyFile "64-bit\*.set", "C:\Program Files (x86)\Microsoft Dynamics\GP2010\", True
    FSO.CopyFile "64-bit\*.lnk", DesktopPath, True
ElseIf FSO.FolderExists("C:\Program Files\Microsoft Dynamics\GP2010\Mekorma MICR") Then
    WScript.Echo "Installing 32-bit (with MICR)."
    FSO.CopyFile "32-bit MICR\*.set", "C:\Program Files\Microsoft Dynamics\GP2010\", True
    FSO.CopyFile "32-bit MICR\*.lnk", DesktopPath, True 
Else
    WScript.Echo "Installing 32-bit."
    FSO.CopyFile "32-bit\*.SET", "C:\Program Files\Microsoft Dynamics\GP2010\", True
    FSO.CopyFile "32-bit\*.lnk", DesktopPath, True
End If

If Err.Number = 70 Then
    CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """" , "", "runas", 1
    WScript.Quit
ElseIf Err.Number <> 0 Then
    MsgBox "Error " & Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description
Else
    MsgBox "Installed successfully."
End If

Zusammenfassend: Wie kann ich ein VBScript, Berechtigungen zu erhöhen ohne verursacht XP stall in ein "Ausführen Als" - dialog-box, und ohne dass Windows 7 das kopieren der Dateien in AppData\Local\VirtualStore statt?

InformationsquelleAutor db2 | 2012-11-08

Schreibe einen Kommentar