Ag seoladh SAP GUI ó bhrabhsálaí

Scríobh mé an chéad alt seo i mo blog, ionas nach ndéanfaí cuardach agus cuimhneamh arís níos déanaí, ach ós rud é nach léann aon duine an blag, bhí mé ag iarraidh an fhaisnéis seo a roinnt le gach duine, ar eagla go mbeadh sé úsáideach do dhuine éigin.

Agus tú ag obair ar an smaoineamh ar sheirbhís athshocraithe pasfhocal i gcórais SAP R/3, d'éirigh ceist - conas SAP GUI a sheoladh leis na paraiméadair riachtanacha ón mbrabhsálaí? Ós rud é gur chiallaigh an smaoineamh seo úsáid a bhaint as seirbhís gréasáin, freagra a thabhairt ar iarratas gallúnach ón SAP GUI ar dtús agus litir a sheoladh le nasc chuig leathanach gréasáin le script chun an focal faire a athshocrú go dtí an ceann tosaigh, agus ansin é a thaispeáint don úsáideoir teachtaireacht faoin athshocrú pasfhocal rathúil agus a thaispeánann an focal faire tosaigh seo , ansin ba mhaith liom go mbeadh nasc ag an leathanach seo freisin chun SAP GUI a sheoladh. Ina theannta sin, ba cheart go n-osclódh an nasc seo an córas atá ag teastáil, agus, b'fhearr, leis na réimsí logáil isteach agus pasfhocal líonta isteach ag an am céanna: ní bheadh ​​ar an úsáideoir ach an focal faire táirgiúil a líonadh isteach faoi dhó.

Ní raibh seoladh SAP Logon suimiúil dár gcuspóir, agus nuair a bhí sapgui.exe á rith bhí sé dodhéanta an cliant agus an t-ainm úsáideora a shonrú, ach bhíothas in ann córas a sheoladh nach bhfuil sainithe i SAP Logon. Ar an láimh eile, ní raibh sé ábhartha go háirithe seoladh SAP GUI le paraiméadair fhreastalaí treallach: má táimid ag réiteach an fhadhb a bhaineann le pasfhocal úsáideora a athshocrú, is dóichí go bhfuil an líne riachtanach aige cheana féin i SAP Logon, leis na socruithe a theastaíonn uaidh, agus ansin ní gá praiseach a dhéanamh lena chuid féin. Ach chomhlíon teicneolaíocht Aicearra SAP GUI agus an clár sapshcut.exe féin na ceanglais shonraithe, rud a d’fhág gur féidir an GUI SAP a sheoladh ag baint úsáide as “aicearra” sonrach.

Réiteach na faidhbe ceann ar aghaidh: ag seoladh sapshcut.exe díreach ón mbrabhsálaí ag baint úsáide as réad 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');
}

Is é an réiteach go dona: ar an gcéad dul síos, ní oibríonn sé ach in Internet Explorer, sa dara háit, éilíonn sé socruithe slándála cuí sa bhrabhsálaí, a d'fhéadfadh a bheith toirmiscthe in eagraíocht ag leibhéal an fhearainn, agus fiú má cheadaítear é, taispeánann an brabhsálaí fuinneog le scanrúil. rabhadh don úsáideoir:

Ag seoladh SAP GUI ó bhrabhsálaí

Fuair ​​​​mé réiteach #2 ar an Idirlíon: do phrótacal gréasáin féin a chruthú. Ligeann sé dúinn an t-iarratas a theastaíonn uainn a sheoladh ag baint úsáide as nasc a léiríonn an prótacal, a chláraíonn muid féin i Windows sa chlár sa rannóg HKEY_CLASSES_ROOT. Ós rud é go bhfuil a fho-alt féin ag SAP GUI Shortcut san alt seo, is féidir leat paraiméadar teaghrán Prótacal URL a chur leis a bhfuil luach folamh ann:

Ag seoladh SAP GUI ó bhrabhsálaí

Tosaíonn an prótacal seo sapgui.exe le paraiméadar /GEARRÁID, agus sin é go díreach a theastaíonn uainn:

Ag seoladh SAP GUI ó bhrabhsálaí

Bhuel, nó más mian linn prótacal go hiomlán treallach a dhéanamh (mar shampla, sapshcut), ansin is féidir leat é a chlárú ag baint úsáide as an gcomhad reg seo a leanas:

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

Anois, má dhéanaimid nasc ar leathanach gréasáin a léiríonn an prótacal Sapgui.Shortcut.Comhad Ar bhealach comhchosúil:

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

Ba cheart dúinn fuinneog mar seo a fheiceáil:

Ag seoladh SAP GUI ó bhrabhsálaí

Agus is cosúil go bhfuil gach rud iontach, ach nuair a chliceálann tú ar an gcnaipe “Ceadaigh” feicimid:

Ag seoladh SAP GUI ó bhrabhsálaí

Úps, d'iompaigh an brabhsálaí an spásbharra go %20. Bhuel, déanfar carachtair eile a ionchódú freisin ina gcód uimhriúil féin le siombail faoin gcéad. Agus is é an rud is míthaitneamhach ná nach féidir aon rud a dhéanamh anseo ag leibhéal an bhrabhsálaí (déantar gach rud anseo de réir an chaighdeáin) - ní maith leis an mbrabhsálaí carachtair den sórt sin, agus ní oibríonn ateangaire ordú Windows le luachanna ionchódaithe den sórt sin. Agus lúide amháin eile - cuirtear an teaghrán ar fad ar aghaidh mar pharaiméadar, lena n-áirítear ainm an phrótacail agus fiú an idirstad (sapgui.shortcut.comhad:). Thairis sin, cé go mar an gcéanna sapshcut.exe in ann gach rud nach paraiméadar é a chaitheamh ar shiúl (tosaíonn sé leis an tsiombail “-“, ansin an t-ainm, “=” agus luach), i.e. líne mar "sapgui.shortcut.file: -system=SID"oibreoidh sé fós, ansin gan spás"sapgui.shortcut.file:-system=SID“ní oibríonn a thuilleadh.

Tarlaíonn sé, i bprionsabal, go bhfuil dhá rogha ann chun prótacal URI a úsáid:

  1. Ag baint úsáide as gan paraiméadair: Cruthaímid sraith iomlán de phrótacail le haghaidh ár gcórais go léir den chineál SIDMANDT, cineál AAA200, BBB200 agus mar sin de. Más gá duit ach an córas atá ag teastáil a thosú, tá an rogha sách inoibrithe, ach inár gcás níl sé oiriúnach, ós rud é ar a laghad gur mhaith leat logáil isteach an úsáideora a aistriú, ach ní féidir é seo a dhéanamh ar an mbealach seo.
  2. Ag baint úsáide as clár fillteán chun glaoch sapshcut.exesapgui.exe. Tá croílár an chláir seo simplí - caithfidh sé an teaghrán a tharchuireann an brabhsálaí chuige tríd an bprótacal gréasáin a ghlacadh agus é a iompú isteach san léiriú a fhaigheann Windows, i.e. déanann sé gach cód carachtar ar ais ina charachtair (b'fhéidir fiú an teaghrán a pharsáil de réir paraiméadair) agus glaonna SAP GUI cheana féin le hordú ceart ráthaithe. Inár gcás, níl sé go hiomlán oiriúnach freisin (sin an fáth nár scríobh mé fiú é), toisc nach leor dúinn an prótacal a chur leis ar gach ríomhaire úsáideora (laistigh den fhearann ​​​​tá sé seo fós ceart go leor, cé go bhfuil sé níos fearr freisin seachain an cleachtas seo), ach anseo beidh orainn an clár a chur ar an ríomhaire níos mó, agus a chinntiú freisin nach n-imíonn sé nuair a athshuiteáiltear na bogearraí ar an ríomhaire.

Iad siúd. Déanaimid deireadh leis an rogha seo freisin mar rud atá mí-oiriúnach dúinn.

Ag an bpointe seo bhí mé ag tosú ag smaoineamh cheana féin go mbeadh orm slán a fhágáil leis an smaoineamh SAP GUI a sheoladh leis na paraiméadair riachtanacha ón mbrabhsálaí, ach ansin tháinig an smaoineamh dom gur féidir le SAP Logon tú aicearra a dhéanamh agus cóip é chuig do dheasc. Bhain mé úsáid as an modh seo uair amháin, ach roimhe sin níor fhéach mé go sonrach ar an gcomhad aicearra. Agus d'éirigh sé amach gur comhad téacs rialta é an t-aicearra seo leis an síneadh .sap. Agus má ritheann tú é ar Windows, seolfaidh SAP GUI leis na paraiméadair atá sonraithe sa chomhad seo. "Bingó!"

Tá formáid an chomhaid seo thart ar an méid seo a leanas (b’fhéidir go bhfuil idirbheart seolta ag an am tosaithe freisin, ach fágadh ar lár é):

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

Dealraíonn sé go bhfuil gach rud atá ag teastáil: aitheantóir córais, cliant, ainm úsáideora agus fiú pasfhocal. Agus fiú paraiméadair bhreise: Teideal - teideal fuinneoige, GuiSize — méid na fuinneoige reatha (scáileán iomlán nó nach ea) agus Athúsáid — cibé an bhfuil sé riachtanach fuinneog nua a oscailt nó fuinneog atá oscailte cheana féin a úsáid leis an gcóras céanna. Ach tháinig nuance chun cinn láithreach - d'éirigh sé amach nach bhféadfaí an focal faire i SAP Logon a shocrú, cuireadh bac ar an líne. Tharla sé go ndearnadh é seo ar chúiseanna slándála: stórálann sé gach aicearraí a cruthaíodh i SAP Logon i gcomhad sapshortcut.ini (In aice le saplogon.ini i bpróifíl úsáideora Windows) agus ansin, cé go bhfuil siad criptithe, níl siad ró-láidir criptithe agus, más mian leo, is féidir iad a dhíchriptiú. Ach is féidir leat é seo a réiteach trí luach paraiméadar amháin a athrú sa chlár (is é an luach réamhshocraithe 0):

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

Díghlasálann sé seo an réimse Pasfhocal le hiontráil ar an bhfoirm cruthú aicearra i SAP Logon:

Ag seoladh SAP GUI ó bhrabhsálaí

Agus nuair a chuireann tú pasfhocal isteach sa réimse seo, cuirfear é sa líne chomhfhreagrach
sapshortcut.ini, ach nuair a tharraingíonn tú aicearra chuig an deasc, níl sé le feiceáil ann - ach is féidir leat é a chur ann de láimh. Tá an focal faire criptithe, le haghaidh 111111 beidh sé mar seo a leanas: PW_49B02219D1F6, le haghaidh 222222 - PW_4AB3211AD2F5. Ach tá níos mó suim againn go bhfuil an focal faire seo criptithe ar bhealach amháin, neamhspleách ar an ríomhaire sonrach, agus má athshocraímid an focal faire go dtí an ceann tosaigh, ansin is féidir linn luach réamh-aitheanta amháin a úsáid sa réimse seo. Bhuel, más mian linn pasfhocal a cruthaíodh go randamach a úsáid, beidh orainn algartam an tsiféir seo a thuiscint. Ach de réir na samplaí a tugadh, ní bheidh sé seo deacair a dhéanamh. Dála an scéil, i SAP GUI 7.40 imithe an réimse seo go hiomlán as an bhfoirm, ach glacann sé i gceart comhad le pasfhocal líonta isteach.

Is é sin, tharlaíonn sé go raibh sa bhrabhsálaí ach cliceáil ar an nasc chuig comhad leis an síneadh .sap agus an fhormáid atá ag teastáil - agus beidh sé a thairiscint chun é a oscailt mar chomhad cosúil le SAP GUI Aicearra (go nádúrtha ar ríomhaire le SAP GUI suiteáilte) agus osclóidh sé fuinneog SAP GUI leis na paraiméadair shonraithe (má tá an SID agus an péire cliant sa liosta SAP Logon ar an ríomhaire seo).

Ach, tá sé soiléir nach gcruthóidh aon duine comhaid roimh ré go simplí agus iad a stóráil ar an suíomh - ní mór iad a ghiniúint bunaithe ar na paraiméadair is gá. Mar shampla, is féidir leat script PHP a chruthú chun aicearraí a ghiniúint (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";
?>

Mura sonraíonn tú ainm úsáideora agus pasfhocal, gheobhaidh tú an fhuinneog seo a leanas ag iarraidh logáil isteach agus pasfhocal:

Ag seoladh SAP GUI ó bhrabhsálaí

Mura n-éiríonn leat ach an logáil isteach, líonfar an réimse logáil isteach agus beidh an réimse pasfhocail folamh. Má thugaimid logáil isteach agus pasfhocal don úsáideoir, ach tá an eochair EnablePassword ag an úsáideoir ar an ríomhaire sa chlár sa roinn [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] socraithe go 0, ansin faigheann muid an rud céanna. Agus ach amháin má tá an eochair seo socraithe go 1 agus go gcuirfimid an t-ainm agus an focal faire tosaigh ar aghaidh, spreagfaidh an córas láithreach tú pasfhocal buan nua a chur isteach faoi dhó. Sin an méid a theastaigh uainn a fháil.

Mar thoradh air sin, tá na roghanna breithnithe seo a leanas againn mar léiriú ar gach ceann díobh thuas:

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

Oireann an rogha dheireanach domsa. Ach in ionad aicearraí SAP a ghiniúint, is féidir leat úsáid a bhaint freisin, mar shampla, comhaid CMD a ghiniúint, a osclóidh, nuair a osclaítear iad ó bhrabhsálaí, an fhuinneog SAP GUI duit freisin. Seo thíos sampla (sapguicmd.php) an GUI SAP a sheoladh go díreach leis an teaghrán nasc iomlán, gan gá le SAP Logon a bheith cumraithe:

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

Foinse: will.com

Add a comment