Verknüpfung die "als Administrator" startet erstellen

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Verknüpfung die "als Administrator" startet erstellen

Post by Theo_Gottwald » 24. Mar 2019, 14:34

Der Anwender soll eine Verknüpfung bekommen, die ein Programm startet.
Aber als Administrator.

Der CNS\-Befehl des MPR erstellt zwar eine beliebige Verknüpfung, aber diese läuft erst Mal nicht "als Administrator".

Möglichkeit 1: Fix und fertige Verknüpfung kopieren
Eine Möglichkeit wäre nun, man erzeigt sich die Verknüpfung fix und fertig und legt diese dem Skript bei.
Und kopiert die Verknüpfung dann nach der Installation einfach "fix und fertig" an den Zielpfad.

Möglichkeit 2: Verknüpfung patchen.
Wir erzeugen eine Verknüpfung mit dem Befehl CNS\ und patchen diese Verknüpfung dann so, dass die Verknüpfung als Administrator startet. Dazu ändern wir das Byte 22 in dem wir dort das Bit 6 setzen.
Dazu verwenden wir den neuen "BIT\"-Befehl des MPR.

Code: Select all

' +++ main_Make_Run_as Admin.rem +++
' Zweck: 
'
' Serie: 
'
' Bemerkungen: 
'
' erstellt am: 22.03.2019
' von: Theo Gottwald
'========================
'
'#EXE:?path
'#SPI:AutoSettings
'#FDC:Ask
'#MAN:ra
'
KRM\2
VAR\$$NAM=?path\Mybat
VAR\$$TAP=$$NAM.bat
' 1. Zuerst erzeugen wir eine Batch-Datei
VAR\$$TXA=@ECHO OFF$crlf$REM *** User should run this batch in order to execute a batch "as Administrator"
DEL\$$TAP
CTF\$$TAP<$$TXA

' 2. Nun erzeugen wir einen Shortcut (Link) zu der Batch-Datei
VAR\$$NAL=$$NAM.lnk
CNS\$$NAM|$$TAP
' Nun setzen wir das "Run as Admin Flag"
IEF\$$NAL
   CFF\$$NAL>$$NAI
ELSE
   MBX\Error Link does not exist.
   @
EEF\

GSS\1,21|$$NAI>$$PAA
GSS\22,22|$$NAI>$$PAB

' Angabe von 0 beim End-Byte bedeutet bis zum letzten Byte
GSS\23,0|$$NAI>$$PAC

' Das Byte 22 patchen
ASC\$$PAB>$$PAN
' Bit 6 in Byte 22 setzen (32)
BIT\set|$$PAN|6>$$PAN
CHR\$$PAN>$$PAB

' Datei wieder zusammenfügen
VAR\$$OUT=$$PAA$$PAB$$PAC
DEL\$$NAL
MBX\!
CTF\$$NAL<$$OUT

@

Aber wie findet man denn nun heraus welches Byte hier den Unterschied macht?
Bei uns war es ja das Byte 22. Aber welches Byte gehört zu welcher Option?

Das kann man so herausfinden.
Man nimmt die Verknüpfung und macht einfach eine Kopie davon.
Nun nimmt man manuell an der Kopie die gewünschte Veränderung vor.

Das Folgende Skript zeigt dann den Unterschied zwischen Original und veränderter Datei.
Hier ist das eben Byte 22, das von 0 auf 32 wechselt.

Die Idee dazu stammt von hier:
Der Admin Patch

Code: Select all

KRM\2

VAR\$$FIA=?path\Shortcut A.lnk
VAR\$$FIB=?path\Shortcut B.lnk

CFF\$$FIA>$$CIA
CFF\$$FIB>$$CIB

GSL\$$CIA>$$LEA
GSL\$$CIB>$$LEB

IVV\$$LEA!$$LEB
   MBX\Len not equal!
'ELSE
'   MBX\LEN=$$LEA
EVV\

FOR\$$IND|1|$$LEA
   GSS\$$IND,$$IND|$$CIA>$$BYA
   GSS\$$IND,$$IND|$$CIB>$$BYB
   IVV\$$BYA!$$BYB
      ASC\$$BYA>$$AYA
      ASC\$$BYB>$$AYB
      MBX\$$IND--$$AYA!$$AYB
   EVV\
NXT\
@
Hier der entsprechende Code für Anwender des Smart Package Robot:

Code: Select all

'#EXE:?path\
'#SPI:ForceWrite

VAR.$$NAM=?path\Mybat
VAR.$$TAP=$$NAM.bat

' 1. Zuerst erzeugen wir eine Batch-Datei
VAR.$$TXA=@ECHO OFF$crlf$REM *** User should run this batch in order to execute a batch "as Administrator"
DEL.$$TAP
CTF.$$TAP|$$TXA

' 2. Nun erzeugen wir einen Shortcut (Link) zu der Batch-Datei
VAR.$$NAL=$$NAM.lnk
'CNS\$$NAL|$$TAP
CSC.desktop|Mybat|$$TAP

' Nun setzen wir das "Run as Admin Flag"
VAR.$$NAL=?desktop\Mybat.lnk
CFF.$$NAL|$$NAI
GSS.1|21|$$NAI|$$PAA
GSS.22|22|$$NAI|$$PAB
GSS.23|0|$$NAI|$$PAC
CHR.32|$$PAB
VAV.$$OUT=$$PAA$$PAB$$PAC
DEL.$$NAL
CTF.$$NAL|$$OUT

ENR.

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 2 guests