Kukhazikitsa SAP GUI kuchokera pa msakatuli

Poyamba ndinalemba nkhaniyi mu yanga blog, kuti musafufuze ndikukumbukiranso pambuyo pake, koma popeza palibe amene amawerenga blog, ndinkafuna kugawana ndi aliyense chidziwitso ichi, ngati wina angachipeze chothandiza.

Ndikugwira ntchito pa lingaliro la ntchito yokonzanso mawu achinsinsi mu machitidwe a SAP R/3, funso linabuka - momwe mungayambitsire SAP GUI ndi magawo ofunikira kuchokera kwa osatsegula? Popeza lingaliro ili limatanthauza kugwiritsa ntchito intaneti, choyamba kuyankha pempho la SOAP kuchokera ku SAP GUI ndikutumiza kalata yokhala ndi ulalo wa tsamba lawebusayiti ndi script yokhazikitsanso mawu achinsinsi ku yoyamba, kenako kuwonetsa kwa wogwiritsa ntchito. uthenga wokhudza kukonzanso bwino kwachinsinsi ndikuwonetsa mawu achinsinsi oyambilira, ndiye ndikufuna kuti tsamba ili likhalenso ndi ulalo woyambitsa SAP GUI. Kuphatikiza apo, ulalo uwu uyenera kutsegula dongosolo lomwe mukufuna, ndipo, makamaka, ndi malo olowera ndi mawu achinsinsi odzazidwa nthawi imodzi: wogwiritsa ntchito amangofunika kudzaza mawu achinsinsi kawiri.

Kuyambitsa SAP Logon sikunali kosangalatsa kwa cholinga chathu, ndipo poyendetsa sapgui.exe sikunali kotheka kufotokozera kasitomala ndi dzina la ogwiritsa ntchito, koma zinali zotheka kukhazikitsa dongosolo lomwe silinafotokozedwe mu SAP Logon. Kumbali ina, kuyambitsa SAP GUI ndi magawo opangira ma seva sikunali kofunikira kwenikweni: ngati tikuthetsa vuto lakukhazikitsanso mawu achinsinsi a wogwiritsa ntchito, ndiye kuti ali ndi mzere wofunikira mu SAP Logon, ndi zoikamo zomwe amafunikira, ndipo pamenepo. palibe chifukwa chosokoneza ndi zake. Koma zofunikira zomwe zafotokozedwazo zinakwaniritsidwa ndi teknoloji ya SAP GUI Shortcut ndi pulogalamu ya sapshcut.exe yokha, yomwe inachititsa kuti ayambe kuyambitsa SAP GUI pogwiritsa ntchito "chidule" chapadera.

Kuthetsa vutolo: kuyambitsa sapshcut.exe mwachindunji kuchokera pa msakatuli pogwiritsa ntchito chinthu cha 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');
}

Njira yothetsera vutoli ndi yoipa: choyamba, imangogwira ntchito mu Internet Explorer, kachiwiri, imafuna makonda otetezedwa mumsakatuli, omwe mu bungwe akhoza kuletsedwa pamlingo wa domain, ndipo ngakhale ataloledwa, osatsegula amawonetsa zenera ndi mantha. chenjezo kwa wogwiritsa ntchito:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Ndapeza yankho #2 pa intaneti: kupanga tsamba lanu la protocol. Imatilola kuyambitsa pulogalamu yomwe tikufuna pogwiritsa ntchito ulalo wosonyeza protocol, yomwe ife tokha timalembetsa mu Windows mu registry mu gawo la HKEY_CLASSES_ROOT. Popeza SAP GUI Shortcut ili ndi gawo lake mgawoli, mutha kuwonjezera chingwe cha URL Protocol ndi mtengo wopanda pake pamenepo:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Protocol iyi imayamba sapgui.exe ndi parameter /SHORTCUT, zomwe ndizomwe tikufuna:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Chabwino, kapena ngati tikufuna kupanga ndondomeko yokhazikika (mwachitsanzo, sapshcut), ndiye mutha kulembetsa pogwiritsa ntchito fayilo ya reg:

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""

Tsopano, ngati tipanga ulalo patsamba lomwe likuwonetsa protocol Sapgui.Shortcut.Fayilo Momwemonso:

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

Tiyenera kuwona zenera ngati izi:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Ndipo zonse zikuwoneka bwino, koma mukadina batani la "Lolani" tikuwona:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Eya, msakatuli adatembenuza chowongolera kukhala %20. Chabwino, zilembo zina zidzasungidwanso mu manambala awo okhala ndi chizindikiro chaperesenti. Ndipo chinthu chosasangalatsa kwambiri ndikuti palibe chomwe chingachitike pano pamlingo wa osatsegula (zonse apa zikuchitika molingana ndi muyezo) - msakatuli sakonda zilembo zotere, ndipo womasulira wamalamulo a Windows sagwira ntchito ndi zikhalidwe zotere. Ndipo kuchotsera kwinanso - chingwe chonsecho chimadutsa ngati parameter, kuphatikiza dzina la protocol komanso colon (sapgui.shortcut.file:). Komanso, ngakhale chimodzimodzi sapshcut.exe akhoza kutaya chirichonse chomwe sichili chizindikiro chake (chimayamba ndi chizindikiro "-", ndiye dzina, "=" ndi mtengo), i.e. mzere ngati "sapgui.shortcut.file: -system=SID"zigwirabe ntchito, ndiye popanda malo"sapgui.shortcut.file:-system=SID"sikugwiranso ntchito.

Zikuoneka kuti, kwenikweni, pali njira ziwiri zogwiritsira ntchito protocol ya URI:

  1. Kugwiritsa ntchito popanda magawo: Timapanga ma protocol ambiri amtundu wathu wonse SIDMANT, monga Wachinyamata, BBB200 ndi zina zotero. Ngati mungofunika kuyambitsa dongosolo lomwe mukufuna, ndiye kuti njirayo ndi yotheka, koma kwa ife si yabwino, chifukwa mungafune kusamutsa olowera, koma izi sizingachitike.
  2. Kugwiritsa ntchito pulogalamu yoyimba foni sapshcut.exe kapena sapgui.exe. Chofunikira cha pulogalamuyi ndi chophweka - chiyenera kutenga chingwe chomwe osatsegula amachitumizira kudzera pa intaneti ndikusintha kukhala chiwonetsero chomwe Windows imalandira, i.e. imatembenuza zilembo zonse kukhala zilembo (mwinanso kugawa chingwe molingana ndi magawo) ndikuyitanitsa kale SAP GUI ndi lamulo lotsimikizika lolondola. Kwa ife, sizili zoyenera kwathunthu (ndicho chifukwa chake sindinazilembe nkomwe), chifukwa sizokwanira kuti tiwonjezere ma protocol pa ma PC onse ogwiritsa ntchito (mkati mwa domain izi zikadali bwino, ngakhale zili bwino pewani mchitidwewu), koma apa tifunika malo ochulukirapo pulogalamuyo pa PC, komanso kuonetsetsa kuti sizichoka pomwe pulogalamuyo idakhazikitsidwanso pa PC.

Iwo. Timatayanso njira iyi ngati yosayenera kwa ife.

Panthawiyi ndinali nditayamba kuganiza kuti ndiyenera kunena zabwino pa lingaliro loyambitsa SAP GUI ndi magawo ofunikira kuchokera kwa osatsegula, koma ndinaganiza kuti mukhoza kupanga njira yachidule mu SAP Logon ndi koperani ku kompyuta yanu. Ndinagwiritsa ntchito njirayi kamodzi, koma izi zisanachitike sindinayang'ane mwachindunji fayilo yachidule. Ndipo zidapezeka kuti njira yachidule iyi ndi fayilo yanthawi zonse yokhala ndi zowonjezera .sap. Ndipo ngati muthamanga pa Windows, SAP GUI idzayambitsa ndi magawo omwe atchulidwa mu fayiloyi. "Bingo!"

Mawonekedwe a fayiloyi ali pafupifupi awa (pakhoza kukhalanso ntchito yomwe idakhazikitsidwa poyambira, koma ndidayisiya):

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

Zikuwoneka kuti chilichonse chomwe chikufunika: chizindikiritso cha dongosolo, kasitomala, dzina lolowera komanso mawu achinsinsi. Komanso magawo owonjezera: Title - mutu wawindo, GuiSize - kukula kwa zenera lothamanga (chithunzi chonse kapena ayi) ndi Gwiritsani ntchito - kaya kuli kofunikira kutsegula zenera latsopano kapena kugwiritsa ntchito kale lotseguka ndi dongosolo lomwelo. Koma nuance nthawi yomweyo idatulukira - zidapezeka kuti mawu achinsinsi mu SAP Logon sangathe kukhazikitsidwa, mzerewo udatsekedwa. Zinapezeka kuti izi zidachitika chifukwa chachitetezo: zimasunga njira zazifupi zomwe zidapangidwa mu SAP Logon mufayilo sapshortcut.ini (Pafupi saplogon.ini mu mbiri ya ogwiritsa ntchito a Windows) ndipo pamenepo, ngakhale adabisidwa, samabisidwa mwamphamvu kwambiri ndipo, ngati angafune, amatha kusindikizidwa. Koma mutha kuthetsa izi posintha mtengo wa parameter imodzi mu registry (mtengo wokhazikika ndi 0):

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

Izi zimatsegula gawo la Achinsinsi kuti mulowe pa fomu yopangira njira yachidule mu SAP Logon:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Ndipo mukalowetsa mawu achinsinsi m'munda uno, adzayikidwa pamzere wofanana
sapshortcut.ini, koma mukakokera njira yachidule pa desktop, sizikuwoneka pamenepo - koma mutha kuwonjezera pamenepo pamanja. Mawu achinsinsi ali encrypted, kwa 111111 adzakhala motere: PW_49B02219D1F6, kwa 222222 - PW_4AB3211AD2F5. Koma tili ndi chidwi chofuna kudziwa kuti mawu achinsinsiwa amasungidwa m'njira imodzi, osadalira pa PC yeniyeni, ndipo ngati tisintha mawu achinsinsi kukhala oyamba, ndiye kuti titha kugwiritsa ntchito mtengo womwe umadziwika kale m'munda uno. Chabwino, ngati tikufuna kugwiritsa ntchito mawu achinsinsi opangidwa mwachisawawa, tiyenera kumvetsetsa algorithm ya cipher iyi. Koma tikaganizira zitsanzo zoperekedwazo, zimenezi sizidzakhala zovuta kuchita. Mwa njira, mu SAP GUI 7.40 munda uwu unasowa kwathunthu pa mawonekedwe, koma amavomereza molondola fayilo yokhala ndi mawu achinsinsi.

Ndiko kuti, zikuwoneka kuti mu msakatuli mumangofunika kudina ulalo wa fayilo ndi .sap extension ndi mtundu womwe mukufuna - ndipo idzapereka kuti mutsegule ngati fayilo ngati SAP GUI Shortcut (mwachibadwa pa PC ndi SAP GUI yoikidwa) ndipo idzatsegula zenera la SAP GUI ndi magawo omwe atchulidwa (ngati SID ndi kasitomala ali mu mndandanda wa SAP Logon pa PC iyi).

Koma, zikuwonekeratu kuti palibe amene angangopanga mafayilo pasadakhale ndikuwasunga pamalowo - ayenera kupangidwa potengera magawo ofunikira. Mwachitsanzo, mutha kupanga script ya PHP kuti mupange njira zazifupi (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";
?>

Ngati simunatchule dzina lolowera ndi mawu achinsinsi, mupeza zenera lotsatira ndikufunsani lolowera ndi mawu achinsinsi:

Kukhazikitsa SAP GUI kuchokera pa msakatuli

Mukangodutsa malo olowera, malo olowera adzadzazidwa ndipo malo achinsinsi adzakhala opanda kanthu. Ngati tipatsa wosuta malowedwe ndi mawu achinsinsi, koma wogwiritsa ntchito pa PC ali ndi kiyi ya EnablePassword mu registry mu gawo la [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] lokhazikitsidwa ku 0, ndiye timapeza zomwezo. Ndipo pokhapokha ngati funguloli lakhazikitsidwa ku 1 ndipo tipereka dzina ndi mawu achinsinsi oyambirira, dongosololi lidzakulimbikitsani kuti mulowetse mawu achinsinsi okhazikika kawiri. Ndi zomwe timafunikira kuti tipeze.

Chifukwa chake, tili ndi zosankha zotsatirazi zomwe zimaganiziridwa monga fanizo la zonsezi pamwambapa:

<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>

Njira yomaliza idandikwanira. Koma mmalo mopanga njira zazifupi za SAP, mungagwiritsenso ntchito, mwachitsanzo, kupanga mafayilo a CMD, omwe, atatsegulidwa kuchokera kwa osatsegula, adzatsegulanso zenera la SAP GUI kwa inu. M'munsimu muli chitsanzo (sapgucmd.php) yambitsani SAP GUI mwachindunji ndi chingwe chonse cholumikizira, popanda kufunikira kokhazikitsa 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";
?>

Source: www.habr.com

Kuwonjezera ndemanga