Lansio SAP GUI o borwr

Ysgrifennais yr erthygl hon gyntaf yn fy blog, er mwyn peidio â chwilio a chofio eto yn nes ymlaen, ond gan nad oes neb yn darllen y blog, roeddwn i eisiau rhannu'r wybodaeth hon gyda phawb, rhag ofn y bydd rhywun yn ei chael yn ddefnyddiol.

Wrth weithio ar y syniad o wasanaeth ailosod cyfrinair mewn systemau SAP R/3, cododd cwestiwn - sut i lansio SAP GUI gyda'r paramedrau angenrheidiol o'r porwr? Gan fod y syniad hwn yn awgrymu defnyddio gwasanaeth gwe, yn gyntaf ymateb i gais SEBON gan y GUI SAP ac anfon llythyr gyda dolen i dudalen we gyda sgript ar gyfer ailosod y cyfrinair i'r un cychwynnol, ac yna ei arddangos i'r defnyddiwr neges am ailosod cyfrinair llwyddiannus ac arddangos y cyfrinair cychwynnol iawn hwn , yna hoffwn i'r dudalen hon hefyd gael dolen i lansio SAP GUI. Ar ben hynny, dylai'r ddolen hon agor y system a ddymunir, ac, yn ddelfrydol, gyda'r meysydd mewngofnodi a chyfrinair wedi'u llenwi ar unwaith: dim ond dwywaith y byddai'n rhaid i'r defnyddiwr lenwi'r cyfrinair cynhyrchiol.

Nid oedd lansio SAP Logon yn ddiddorol i'n pwrpas, ac wrth redeg sapgui.exe roedd yn amhosibl nodi'r cleient a'r enw defnyddiwr, ond roedd yn bosibl lansio system nad yw wedi'i diffinio yn SAP Logon. Ar y llaw arall, nid oedd lansio SAP GUI gyda pharamedrau gweinydd mympwyol yn arbennig o berthnasol: os ydym yn datrys y broblem o ailosod cyfrinair defnyddiwr, yna yn fwyaf tebygol mae ganddo'r llinell angenrheidiol yn SAP Logon eisoes, gyda'r gosodiadau sydd eu hangen arno, ac yno nid oes angen llanast gyda'i un ei hun. Ond bodlonwyd y gofynion penodedig gan dechnoleg Shortcut SAP GUI a'r rhaglen sapshcut.exe ei hun, a oedd yn ei gwneud hi'n bosibl lansio'r SAP GUI gan ddefnyddio “llwybr byr” penodol.

Datrys y broblem yn uniongyrchol: lansio sapshcut.exe yn uniongyrchol o'r porwr gan ddefnyddio gwrthrych ActiveX:

function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}

Mae'r datrysiad yn ddrwg: yn gyntaf, dim ond yn Internet Explorer y mae'n gweithio, yn ail, mae angen gosodiadau diogelwch priodol yn y porwr, a all mewn sefydliad gael eu gwahardd ar lefel y parth, a hyd yn oed os caniateir, mae'r porwr yn dangos ffenestr gyda brawychus rhybudd i'r defnyddiwr:

Lansio SAP GUI o borwr

Deuthum o hyd i ateb #2 ar y Rhyngrwyd: creu eich protocol gwe eich hun. Yn ein galluogi i lansio'r cais sydd ei angen arnom gan ddefnyddio dolen sy'n nodi'r protocol, yr ydym ni ein hunain yn ei gofrestru yn Windows yn y gofrestrfa yn yr adran HKEY_CLASSES_ROOT. Gan fod gan SAP GUI Shortcut ei is-adran ei hun yn yr adran hon, gallwch ychwanegu'r paramedr llinyn Protocol URL gyda gwerth gwag yno:

Lansio SAP GUI o borwr

Mae'r protocol hwn yn dechrau sapgui.exe gyda pharamedr /CYNT BYR, sef yr union beth sydd ei angen arnom:

Lansio SAP GUI o borwr

Wel, neu os ydym am wneud protocol cwbl fympwyol (er enghraifft, sapshcut), yna gallwch ei gofrestru gan ddefnyddio'r ffeil reg ganlynol:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTsapshcut]
@="sapshcut Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOTsapshcutDefaultIcon]
@="sapshcut.exe"
[HKEY_CLASSES_ROOTsapshcutshell]
[HKEY_CLASSES_ROOTsapshcutshellopen]
[HKEY_CLASSES_ROOTsapshcutshellopencommand]
@="sapshcut.exe "%1""

Nawr, os ydym yn gwneud dolen ar dudalen we yn nodi'r protocol Sapgui.Shortcut.Ffeil Mewn ffordd debyg:

<a href='Sapgui.Shortcut.File: -system=SID -client=200'>SID200</a>

Dylem weld ffenestr fel hyn:

Lansio SAP GUI o borwr

Ac mae popeth yn ymddangos yn wych, ond pan gliciwch ar y botwm “Caniatáu” fe welwn:

Lansio SAP GUI o borwr

Wps, trodd y porwr y bylchwr yn % 20. Wel, bydd cymeriadau eraill hefyd yn cael eu hamgodio yn eu cod rhifol eu hunain gyda symbol y cant. A'r peth mwyaf annymunol yw na ellir gwneud dim yma ar lefel y porwr (mae popeth yma yn cael ei wneud yn unol â'r safon) - nid yw'r porwr yn hoffi cymeriadau o'r fath, ac nid yw dehonglydd gorchymyn Windows yn gweithio gyda gwerthoedd amgodio o'r fath. Ac un minws arall - mae'r llinyn cyfan yn cael ei basio fel paramedr, gan gynnwys enw'r protocol a hyd yn oed y colon (sapgui.shortcut.file:). Ar ben hynny, er bod yr un peth sapshcut.exe yn gallu taflu popeth nad yw’n baramedr iddo (yn dechrau gyda’r symbol “-“, yna’r enw, “=” a gwerth), h.y. llinell fel "sapgui.shortcut.file: -system=SID"bydd yn dal i weithio, yna heb ofod"sapgui.shortcut.file:-system=SID"ddim yn gweithio mwyach.

Mae'n ymddangos, mewn egwyddor, bod dau opsiwn ar gyfer defnyddio'r protocol URI:

  1. Defnyddio heb baramedrau: Rydym yn creu criw cyfan o brotocolau ar gyfer ein holl systemau o'r math SIDMANDT, math AAA200, BBB200 ac yn y blaen. Os mai dim ond angen i chi gychwyn y system a ddymunir, yna mae'r opsiwn yn eithaf ymarferol, ond yn ein hachos ni nid yw'n addas, oherwydd o leiaf yr hoffech chi drosglwyddo'r mewngofnodi defnyddiwr, ond ni ellir gwneud hyn fel hyn.
  2. Defnyddio rhaglen lapio i ffonio sapshcut.exe neu sapgui.exe. Mae hanfod y rhaglen hon yn syml - rhaid iddo gymryd y llinyn y mae'r porwr yn ei drosglwyddo iddo trwy'r protocol gwe a'i droi'n gynrychiolaeth y mae Windows yn ei dderbyn, h.y. yn troi pob cod cymeriad yn ôl yn nodau (efallai hyd yn oed yn dosrannu'r llinyn yn ôl paramedrau) ac eisoes yn galw SAP GUI gyda gorchymyn cywir gwarantedig. Yn ein hachos ni, nid yw hefyd yn gwbl addas (dyna pam na wnes i hyd yn oed ei ysgrifennu), oherwydd nid yw'n ddigon i ni ychwanegu'r protocol ar bob cyfrifiadur defnyddiwr (o fewn parth mae hyn yn dal yn iawn, er ei fod hefyd yn well osgoi'r arfer hwn), ond yma bydd angen mwy o osod y rhaglen ar y PC, a hefyd sicrhau'n gyson nad yw'n diflannu pan fydd y feddalwedd yn cael ei ailosod ar y cyfrifiadur.

Y rhai. Rydym hefyd yn cael gwared ar yr opsiwn hwn gan ei fod yn anaddas i ni.

Ar y pwynt hwn roeddwn eisoes yn dechrau meddwl y byddai'n rhaid i mi ffarwelio â'r syniad o lansio SAP GUI gyda'r paramedrau angenrheidiol o'r porwr, ond yna daeth y syniad i mi y gallwch chi wneud llwybr byr yn SAP Logon a copïwch ef i'ch bwrdd gwaith. Defnyddiais y dull hwn unwaith, ond cyn hynny nid edrychais yn benodol ar y ffeil llwybr byr. Ac mae'n troi allan bod y llwybr byr hwn yn ffeil testun rheolaidd gyda'r estyniad .sap. Ac os ydych chi'n ei redeg ar Windows, bydd SAP GUI yn lansio gyda'r paramedrau a nodir yn y ffeil hon. "Bingo!"

Mae fformat y ffeil hon oddeutu'r canlynol (efallai y bydd trafodiad wedi'i lansio wrth gychwyn, ond fe'i hepgorais):

[System]
Name=SID
Client=200
[User]
Name=
Language=RU
Password=
[Function]
Title=
[Configuration]
GuiSize=Maximized
[Options]
Reuse=0

Mae'n ymddangos bod popeth sydd ei angen: dynodwr system, cleient, enw defnyddiwr a hyd yn oed cyfrinair. A hyd yn oed paramedrau ychwanegol: Teitl - teitl ffenestr, GuiSize — maint y ffenestr redeg (sgrîn lawn neu beidio) a Ailddefnyddio — a oes angen agor ffenestr newydd neu ddefnyddio un sydd eisoes ar agor gyda'r un system. Ond daeth naws i'r amlwg ar unwaith - daeth i'r amlwg na ellid gosod y cyfrinair yn SAP Logon, rhwystrwyd y llinell. Mae'n troi allan bod hyn wedi'i wneud am resymau diogelwch: mae'n storio'r holl lwybrau byr a grëwyd yn SAP Logon mewn ffeil sapshortcut.ini (Yn ymyl saplogon.ini ym mhroffil defnyddiwr Windows) ac yno, er eu bod wedi'u hamgryptio, nid ydynt wedi'u hamgryptio'n rhy gryf ac, os dymunir, gellir eu dadgryptio. Ond gallwch chi ddatrys hyn trwy newid gwerth un paramedr yn y gofrestrfa (y gwerth diofyn yw 0):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"

Mae hyn yn datgloi'r maes Cyfrinair ar gyfer mynediad ar y ffurflen creu llwybr byr yn SAP Logon:

Lansio SAP GUI o borwr

A phan fyddwch chi'n nodi cyfrinair yn y maes hwn, fe'i gosodir yn y llinell gyfatebol
sapshortcut.ini, ond pan fyddwch yn llusgo llwybr byr i'r bwrdd gwaith, nid yw'n ymddangos yno - ond gallwch ei ychwanegu yno â llaw. Mae'r cyfrinair wedi'i amgryptio, ar gyfer 111111 bydd fel a ganlyn: PW_49B02219D1F6, ar gyfer 222222 - PW_4AB3211AD2F5. Ond mae gennym fwy o ddiddordeb yn y ffaith bod y cyfrinair hwn wedi'i amgryptio mewn un ffordd, yn annibynnol ar y PC penodol, ac os byddwn yn ailosod y cyfrinair i'r un cychwynnol, yna gallwn ddefnyddio un gwerth hysbys yn y maes hwn. Wel, os ydym am ddefnyddio cyfrinair a grëwyd ar hap, bydd yn rhaid i ni ddeall algorithm y seiffr hwn. Ond o ystyried yr enghreifftiau a roddwyd, ni fydd hyn yn anodd ei wneud. Gyda llaw, yn SAP GUI 7.40 diflannodd y maes hwn yn llwyr o'r ffurflen, ond mae'n derbyn yn gywir ffeil gyda chyfrinair wedi'i lenwi.

Hynny yw, mae'n ymddangos bod angen i chi yn y porwr glicio ar y ddolen i ffeil gyda'r estyniad .sap a'r fformat dymunol - a bydd yn cynnig ei agor fel ffeil fel SAP GUI Shortcut (yn naturiol ar gyfrifiadur personol gyda SAP GUI wedi'i osod) a bydd yn agor ffenestr SAP GUI gyda'r paramedrau penodedig (os yw'r SID a'r pâr cleient yn y rhestr SAP Logon ar y cyfrifiadur hwn).

Ond, mae'n amlwg na fydd unrhyw un yn creu ffeiliau ymlaen llaw a'u storio ar y wefan - rhaid eu cynhyrchu yn seiliedig ar y paramedrau angenrheidiol. Er enghraifft, gallwch greu sgript PHP i gynhyrchu llwybrau byr (sapshcut.php):

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$Size = $queries['Size'];
$SID = $queries['SID'];
$Client = $queries['Client'];
if($Client == '') { $Client=200; };
$Lang = $queries['Language'];
if($Lang=='') { $Lang = 'RU'; };
$User = $queries['Username'];
if($User<>'') { $Password = $queries['Password']; };
$filename = $SID.$Client.'.sap';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/sap');
echo "[System]rn";
echo "Name=".$SID."rn";
echo "Client=".$Client."rn";
echo "[User]rn";
echo "Name=".$Username."rn";
echo "Language=".$Lang."rn";
if($Password<>'') echo "Password=".$Password."rn";
echo "[Function]rn";
if($Title<>'') {echo "Title=".$Title."rn";} else {echo "Title=Вход в системуrn";};
echo "[Configuration]rn";
if($Size=='max') { echo "GuiSize=Maximizedrn"; };
echo "[Options]rn";
echo "Reuse=0rn";
?>

Os na fyddwch yn nodi enw defnyddiwr a chyfrinair, fe gewch y ffenestr ganlynol yn gofyn am fewngofnodi a chyfrinair:

Lansio SAP GUI o borwr

Os byddwch chi'n pasio'r mewngofnodi yn unig, bydd y maes mewngofnodi yn cael ei lenwi a bydd y maes cyfrinair yn wag. Os byddwn yn rhoi mewngofnodi a chyfrinair i'r defnyddiwr, ond bod gan y defnyddiwr ar y cyfrifiadur yr allwedd EnablePassword yn y gofrestrfa yn yr adran [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] wedi'i osod i 0, yna rydym yn cael yr un peth. A dim ond os yw'r allwedd hon wedi'i gosod i 1 a'n bod yn pasio'r enw a'r cyfrinair cychwynnol, bydd y system yn eich annog ar unwaith i nodi cyfrinair parhaol newydd ddwywaith. Dyna beth oedd angen i ni ei gael.

O ganlyniad, mae gennym y set ganlynol o opsiynau ystyriol fel enghraifft o’r uchod i gyd:

<html>
<head>
<script>
function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}
</script>
</head>
<body>
<a href='' onclick="javascript:openSAPGui('SID', '200', 'test', '');"/>Example 1: Execute sapshcut.exe (ActiveX)<br>
<a href='Sapgui.Shortcut.File: -system=SID -client=200'>Example 2: Open sapshcut.exe (URI)</a><br>
<a href='sapshcut.php?SID=SID&Client=200&User=test'>Example 3: Open file .sap (SAP GUI Shortcut)</a><br>
</body>
</html>

Roedd yr opsiwn olaf yn fy siwtio i. Ond yn lle cynhyrchu llwybrau byr SAP, gallwch hefyd ddefnyddio, er enghraifft, cynhyrchu ffeiliau CMD, a fydd, o'u hagor o borwr, hefyd yn agor ffenestr SAP GUI i chi. Isod mae enghraifft (sapguicmd.php) lansio'r GUI SAP yn uniongyrchol gyda'r llinyn cysylltiad llawn, heb fod angen ffurfweddu SAP Logon:

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$ROUTER = $queries['ROUTER'];
$ROUTERPORT = $queries['ROUTERPORT'];
$HOST = $queries['HOST'];
$PORT = $queries['PORT'];
$MESS = $queries['MESS'];
$LG = $queries['LG'];
$filename = 'SAPGUI_';
if($MESS<>'') $filename = $filename.$MESS;
if($HOST<>'') $filename = $filename.$HOST;
if($PORT<>'') $filename = $filename.'_'.$PORT;
$filename = $filename.'.cmd';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/cmd');
echo "@echo offrn";
echo "chcp 1251rn";
echo "echo Вход в ".$Title."rn";
echo "set SAP_CODEPAGE=1504rn";
echo 'if exist "%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe'."rn";
echo 'if exist "%ProgramFiles%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles%SAPFrontEndSapGuisapgui.exe'."rn";
echo "set logon=";
if($ROUTER<>'') echo "/H/".$ROUTER;
if($ROUTERPORT<>'') echo "/S/".$ROUTERPORT;
if($MESS<>'') echo "/M/".$MESS;
if($HOST<>'') echo "/H/".$HOST;
if($PORT<>'') echo "/S/".$PORT;
if($LG<>'') echo "/G/".$LG;
echo "rn";
echo '"%gui%" %logon%'."rn";
?>

Ffynhonnell: hab.com

Ychwanegu sylw