Kwethulwa i-SAP GUI kusuka kusiphequluli

Ngiqale ngabhala lesi sihloko kweyami Π±Π»ΠΎΠ³, ukuze ungasesha futhi ukhumbule futhi kamuva, kodwa njengoba kungekho muntu ofunda ibhulogi, ngangifuna ukwabelana ngalolu lwazi nawo wonke umuntu, uma kwenzeka othile ekuthola kuwusizo.

Ngenkathi usebenza ngombono wesevisi yokusetha kabusha iphasiwedi ezinhlelweni ze-SAP R/3, kwaphakama umbuzo - indlela yokuqalisa i-SAP GUI ngemingcele edingekayo kusuka kusiphequluli? Njengoba lo mbono wawusho ukusetshenziswa kwesevisi yewebhu, kuqala ukuphendula isicelo se-SOAP esivela ku-SAP GUI nokuthumela incwadi enesixhumanisi ekhasini lewebhu enombhalo wokusetha kabusha iphasiwedi kweyokuqala, bese iboniswa kumsebenzisi. umlayezo mayelana nokusetha kabusha iphasiwedi ngempumelelo nokubonisa le phasiwedi yokuqala , bese ngingathanda ukuthi leli khasi libe nesixhumanisi sokuqalisa i-SAP GUI. Ngaphezu kwalokho, lesi sixhumanisi kufanele sivule isistimu oyifunayo, futhi, okungcono, izinkambu zokungena nephasiwedi zigcwaliswe ngesikhathi esisodwa: umsebenzisi uzodinga kuphela ukugcwalisa iphasiwedi ekhiqiza kabili.

Ukwethula i-SAP Logon kwakungeyona into ethakazelisayo ngenjongo yethu, futhi lapho kusetshenziswa i-sapgui.exe kwakungenakwenzeka ukucacisa iklayenti negama lomsebenzisi, kodwa kwakungenzeka ukuqalisa uhlelo olungachazwanga ku-SAP Logon. Ngakolunye uhlangothi, ukwethula i-SAP GUI ngemingcele yeseva engafaneleki kwakungafaneleki ikakhulukazi: uma sixazulula inkinga yokusetha kabusha iphasiwedi yomsebenzisi, cishe kungenzeka ukuthi usevele unomugqa odingekayo ku-SAP Logon, nezilungiselelo azidingayo, futhi lapho. asikho isidingo sokudla owakhe. Kodwa izidingo ezibaluliwe zahlangatshezwana nobuchwepheshe be-SAP GUI Shortcut kanye nohlelo lwe-sapshcut.exe ngokwalo, okwenza kube nokwenzeka ukuqalisa i-SAP GUI usebenzisa β€œisinqamuleli” esithile.

Ukuxazulula inkinga ngqo: kwethulwa i-sapshcut.exe ngqo kusuka kusiphequluli usebenzisa into ye-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');
}

Isixazululo sibi: okokuqala, sisebenza kuphela ku-Internet Explorer, okwesibili, sidinga izilungiselelo ezifanele zokuphepha esipheqululini, okuthi enhlanganweni ingavinjelwa ezingeni lesizinda, futhi noma ngabe kuvunyelwe, isiphequluli sibonisa iwindi ngokusabisayo. isixwayiso kumsebenzisi:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Ngithole isixazululo #2 ku-inthanethi: ukudala eyakho iphrothokholi yewebhu. Isivumela ukuthi sethule uhlelo lokusebenza esiludingayo sisebenzisa isixhumanisi esibonisa umthetho olandelwayo, thina ngokwethu esibhalisa ku-Windows kurejista esigabeni HKEY_CLASSES_ROOT. Njengoba Isinqamuleli se-SAP GUI sinesigaba saso esingaphansi kulesi sigaba, ungakwazi ukwengeza ipharamitha yeyunithi yezinhlamvu ze-URL Yephrothokholi enenani elingenalutho lapho:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Le protocol iyaqala sapgui.exe ngepharamitha /SHORTCUT, okuyikhona kanye esikudingayo:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Hhayi-ke, noma uma sifuna ukwenza umthetho olandelwayo ongenamthetho ngokuphelele (isibonelo, i-sapshcut), bese ungayibhalisa usebenzisa ifayela le-reg elilandelayo:

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

Manje, uma senza isixhumanisi ekhasini lewebhu elibonisa umthetho olandelwayo Ifayela.Isinqamuleli.Sapgui Ngendlela efanayo:

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

Kufanele sibone iwindi elifana naleli:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Futhi konke kubonakala kukuhle, kepha uma uchofoza inkinobho ethi "Vumela" sibona:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Eish, isiphequluli siguqule ibha yesikhala yaba ngu-%20. Nokho, ezinye izinhlamvu nazo zizofakwa ikhodi yazo yezinombolo ezinophawu lwephesenti. Futhi into engathandeki kakhulu ukuthi akukho lutho olungenziwa lapha ezingeni lesiphequluli (konke lapha kwenziwa ngokwezinga) - isiphequluli asizithandi izinhlamvu ezinjalo, futhi umhumushi womyalo weWindows akasebenzi namanani anjalo afakwe ikhodi. Futhi ukukhipha okukodwa - yonke intambo idluliswa njengepharamitha, kufaka phakathi igama lephrothokholi kanye nekholoni (sapgui.shortcut.file:). Ngaphezu kwalokho, nakuba okufanayo sapshcut.exe ingalahla yonke into engeyona ipharamitha yayo (iqala ngophawu β€œ-β€œ, bese kuba igama, β€œ=" kanye nenani), i.e. umugqa ofana "sapgui.shortcut.file: -system=SID"kusazosebenza ke ngaphandle kwesikhala"sapgui.shortcut.file:-system=SID"ayisasebenzi.

Kuvela ukuthi, empeleni, kunezinketho ezimbili zokusebenzisa umthetho olandelwayo we-URI:

  1. Ukusebenzisa ngaphandle kwamapharamitha: Sakha inqwaba yamaphrothokholi awo wonke amasistimu ethu ohlobo I-SIDMANDT, njenge I-AAA200, BBB200 njalo njalo. Uma nje udinga ukuqala uhlelo olufunayo, khona-ke inketho iyasebenza impela, kepha kithi ayifanelekile, ngoba okungenani ungathanda ukudlulisa ukungena ngemvume komsebenzisi, kepha lokhu akunakwenziwa ngale ndlela.
  2. Ukusebenzisa uhlelo lokugoqa ukuze ushayele sapshcut.exe noma sapgui.exe. Ingqikithi yalolu hlelo ilula - kufanele ithathe intambo isiphequluli esidlulisela kuyo ngephrothokholi yewebhu bese iyenza ibe isethulo esitholwa yiWindows, i.e. iphendulela wonke amakhodi ezinhlamvu abe yizinhlamvu (mhlawumbe iphinde ihlukanise iyunithi yezinhlamvu ngokuya ngamapharamitha) futhi isivele ibiza i-SAP GUI ngomyalo olungile oqinisekisiwe. Esimweni sethu, futhi ayifaneleki ngokuphelele (yingakho ngingazange ngiyibhale), ngoba akwanele ukuthi singeze iphrothokholi kuwo wonke ama-PC abasebenzisi (ngaphakathi kwesizinda lokhu kusalungile, nakuba kungcono futhi gwema lo mkhuba), kodwa lapha sizodinga ukubeka okwengeziwe uhlelo ku-PC, futhi siphinde siqinisekise ukuthi akusuki lapho isofthiwe iphinda ifakwa ku-PC.

Labo. Futhi siyayilahla le nketho njengengasifaneleki.

Ngalesi sikhathi ngase ngiqala ukucabanga ukuthi kuzofanele ngivalelise emcabangweni wokwethula i-SAP GUI ngemingcele edingekayo kusuka kusiphequluli, kodwa kwabe sekufika umqondo kimi wokuthi ungenza isinqamuleli ku-SAP Logon futhi ikopishe kudeskithophu yakho. Ngasebenzisa le ndlela kanye, kodwa ngaphambi kwalokho angizange ngibheke ngokuqondile ifayela lesinqamuleli. Futhi kuvele ukuthi lesi sinqamuleli siyifayela lombhalo elivamile elinesandiso .sap. Futhi uma uyisebenzisa ku-Windows, i-SAP GUI izokwethula ngemingcele echazwe kuleli fayela. "Bingo!"

Ifomethi yaleli fayela cishe ifana nalokhu okulandelayo (kungase futhi kube khona umsebenzi oqaliswe ekuqaleni, kodwa ngiwushiyile):

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

Kubonakala sengathi yonke into edingekayo: isihlonzi sesistimu, iklayenti, igama lomsebenzisi kanye nephasiwedi. Futhi nemingcele eyengeziwe: Isihloko - isihloko sewindi, GuiSize β€” usayizi wewindi elisebenzayo (isikrini esigcwele noma cha) kanye Sebenzisa futhi β€” kungakhathaliseki ukuthi kudingekile yini ukuvula iwindi elisha noma ukusebenzisa elivele livuliwe elinesistimu efanayo. Kodwa i-nuance yavela ngokushesha - kwavela ukuthi iphasiwedi ku-SAP Logon ayikwazanga ukusethwa, umugqa uvinjelwe. Kuvele ukuthi lokhu kwenziwa ngenxa yezizathu zokuphepha: igcina zonke izinqamuleli ezidalwe ku-SAP Logon efayeleni sapshortcut.ini (Eduzane saplogon.ini kuphrofayela yomsebenzisi we-Windows) futhi lapho, nakuba zibethelwe, azibethelwe kakhulu futhi, uma zifunwa, zingahlehliswa. Kodwa ungakwazi ukuxazulula lokhu ngokushintsha inani lepharamitha eyodwa kurejista (inani elizenzakalelayo lithi 0):

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

Lokhu kuvula inkambu Yephasiwedi ukuze kufakwe efomini lokudala izinqamuleli Kulogo ye-SAP:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Futhi uma ufaka iphasiwedi kulo mkhakha, izofakwa emugqeni ohambisanayo
sapshortcut.ini, kodwa uma uhudula isinqamuleli kudeskithophu, asiveli lapho - kodwa ungayengeza lapho ngokwenza. Iphasiwedi ibethelwe, ku-111111 izoba kanje: PW_49B02219D1F6, ku-222222 - PW_4AB3211AD2F5. Kodwa sinesithakazelo esikhulu eqinisweni lokuthi le phasiwedi ibethelwe ngendlela eyodwa, ngaphandle kwe-PC ethize, futhi uma sisetha kabusha iphasiwedi kweyokuqala, singasebenzisa inani elilodwa elaziwa ngaphambili kulo mkhakha. Hhayi-ke, uma sifuna ukusebenzisa iphasiwedi edalwe ngokungahleliwe, kuzodingeka siqonde i-algorithm yale cipher. Kodwa ukwahlulela ngezibonelo ezinikeziwe, lokhu ngeke kube nzima ukukwenza. Ngendlela, ku-SAP GUI 7.40 le nkambu yanyamalala ngokuphelele efomini, kodwa yamukela kahle ifayela elinephasiwedi egcwele.

Okusho ukuthi, kuvela ukuthi kusiphequluli udinga nje ukuchofoza kusixhumanisi sefayela ngesandiso se-.sap kanye nefomethi oyifunayo - futhi izonikeza ukuyivula njengefayela elifana ne-SAP GUI Shortcut (ngokwemvelo ku-PC nge-SAP GUI efakiwe) futhi izovula iwindi le-SAP GUI elinemingcele ecacisiwe (uma i-SID neklayenti ipheya kuhlu lwe-SAP Logon kule PC).

Kodwa, kuyacaca ukuthi akekho ozomane enze amafayela kusengaphambili futhi awagcine kusayithi - kufanele akhiqizwe ngokusekelwe kumingcele edingekayo. Isibonelo, ungakha umbhalo we-PHP ukuze ukhiqize izinqamuleli (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";
?>

Uma ungalicacisi igama lomsebenzisi nephasiwedi, uzothola iwindi elilandelayo elicela ukungena ngemvume nephasiwedi:

Kwethulwa i-SAP GUI kusuka kusiphequluli

Uma udlula ukungena kuphela, inkambu yokungena izogcwaliswa futhi inkambu yephasiwedi izobe ingenalutho. Uma sinikeza umsebenzisi kokubili ukungena ngemvume nephasiwedi, kodwa umsebenzisi ku-PC unokhiye we-EnablePassword kurejista esigabeni [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] esisethwe ku-0, khona-ke sithola into efanayo. Futhi kuphela uma lo khiye usethelwe ku-1 futhi sidlulisela kokubili igama nephasiwedi yokuqala, isistimu izokwazisa ngokushesha ukuthi ufake iphasiwedi entsha ehlala njalo kabili. Yilokho ebesikudinga ukuze sikuthole.

Ngenxa yalokho, sinesethi elandelayo yezinketho ezicatshangelwe njengomfanekiso wakho konke okungenhla:

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

Inketho yokugcina ingifanele. Kodwa esikhundleni sokukhiqiza izinqamuleli ze-SAP, ungasebenzisa futhi, isibonelo, ukukhiqiza amafayela e-CMD, okuthi, lapho evuliwe kusuka kusiphequluli, azophinde akuvulele iwindi le-SAP GUI. Ngezansi kunesibonelo (sapgucmd.php) yethula ngokuqondile i-SAP GUI ngentambo yokuxhuma egcwele, ngaphandle kwesidingo sokuba ne-SAP Logon elungiselelwe:

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

Engeza amazwana