Оғози SAP GUI аз браузер

Ман бори аввал ин мақоларо дар худ навиштам блог, то баъдан боз ҷустуҷӯ ва ёдовар нашавем, аммо азбаски касе блогро намехонад, мехостам ин маълумотро ба ҳамагон расонам, мабодо касе онро муфид пайдо кунад.

Ҳангоми кор дар ғояи хидматрасонии барқароркунии парол дар системаҳои SAP R/3 саволе ба миён омад - чӣ гуна SAP GUI-ро бо параметрҳои зарурӣ аз браузер оғоз кард? Азбаски ин идея истифодаи хидмати вебро дар назар дошт, аввал посух додан ба дархости SOAP аз SAP GUI ва фиристодани нома бо истинод ба саҳифаи веб бо скрипт барои аз нав танзимкунии парол ба парол ва сипас ба корбар намоиш дода мешавад. паём дар бораи барқароркунии бомуваффақияти парол ва намоиш додани ин пароли ибтидоӣ, пас ман мехоҳам, ки ин саҳифа инчунин истинод барои оғози SAP GUI дошта бошад. Гузашта аз ин, ин истинод бояд системаи дилхоҳро кушояд ва беҳтараш бо майдонҳои логин ва парол якбора пур карда шавад: корбар бояд танҳо ду маротиба пароли самаранокро пур кунад.

Оғози SAP Logon барои ҳадафи мо ҷолиб набуд ва ҳангоми кор кардани sapgui.exe номи муштарӣ ва корбарро муайян кардан ғайриимкон буд, аммо имкон дошт системаеро, ки дар SAP Logon муайян нашудааст, оғоз кард. Аз тарафи дигар, ба кор андохтани SAP GUI бо параметрҳои сервери ихтиёрӣ чандон муҳим набуд: агар мо масъалаи аз нав танзимкунии пароли корбарро ҳал кунем, пас эҳтимол дорад, ки ӯ аллакай дар SAP Logon хатти заруриро бо танзимоти ба ӯ лозима дорад ва дар он ҷо. бо худаш кор кардан лозим нест. Аммо талаботи муайяншуда аз ҷониби технологияи SAP GUI Shortcut ва худи барномаи sapshcut.exe қонеъ карда шуданд, ки имкон дод, ки SAP GUI бо истифода аз "миёнабур"-и мушаххас оғоз шавад.

Ҳалли мушкилот: оғоз кардани sapshcut.exe мустақиман аз браузер бо истифода аз объекти 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');
}

Ҳалли бад аст: аввалан, он танҳо дар Internet Explorer кор мекунад, дуюм, танзимоти мувофиқи бехатариро дар браузер талаб мекунад, ки дар созмон метавонад дар сатҳи домен манъ карда шавад ва ҳатто агар иҷозат дода шавад, браузер равзанаи даҳшатнокро намоиш медиҳад. огоҳӣ ба истифодабаранда:

Оғози SAP GUI аз браузер

Ман дар Интернет ҳалли №2 пайдо кардам: сохтани протоколи веби худ. Ба мо имкон медиҳад, ки замимаеро, ки ба мо лозим аст, бо истифода аз истинод бо нишон додани протокол, ки мо худамон дар Windows дар феҳрист дар бахши HKEY_CLASSES_ROOT сабти ном мекунем, оғоз кунем. Азбаски миёнабури SAP GUI дар ин бахш зербахши худро дорад, шумо метавонед параметри сатри URL-ро бо арзиши холӣ дар он ҷо илова кунед:

Оғози SAP GUI аз браузер

Ин протокол оғоз меёбад sapgui.exe бо параметр /МИЁНА, ки маҳз он чизест, ки ба мо лозим аст:

Оғози SAP GUI аз браузер

Хуб, ё агар мо хоҳем, ки протоколи комилан худсарона созем (масалан, сапшукут), пас шумо метавонед онро бо истифода аз файли 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""

Акнун, агар мо дар як саҳифаи интернетӣ бо нишон додани протокол пайванде созем Sapgui.Shortcut.File Ба ҳамин монанд:

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

Мо бояд равзанаи чунинро бубинем:

Оғози SAP GUI аз браузер

Ва ҳама чиз хуб ба назар мерасад, аммо вақте ки шумо тугмаи "Иҷозат додан" -ро пахш мекунед, мо мебинем:

Оғози SAP GUI аз браузер

Оҳ, браузер сатри фосиларо ба %20 табдил дод. Хуб, аломатҳои дигар низ ба рамзи ададии худ бо рамзи фоиз рамзгузорӣ карда мешаванд. Ва аз ҳама ногувор он аст, ки дар ин ҷо дар сатҳи браузер ҳеҷ кор кардан мумкин нест (дар ин ҷо ҳама кор мувофиқи стандарт анҷом дода мешавад) - браузер ин гуна аломатҳоро дӯст намедорад ва тарҷумони фармони Windows бо чунин арзишҳои рамзгузорӣ кор намекунад. Ва як минуси дигар - тамоми сатр ҳамчун параметр, аз ҷумла номи протокол ва ҳатто ду нуқта (sapgui.shortcut.file:). Гузашта аз ин, гарчанде ҳамон sapshcut.exe метавонад ҳама чизеро, ки барои он параметр нестанд (бо аломати “-“ оғоз мешавад, баъд ном, “=” ва арзиш), яъне. як хати монанди "sapgui.shortcut.file: -system=SID"он ҳоло ҳам кор хоҳад кард, пас бе фосила"sapgui.shortcut.file:-system=SID"дигар кор намекунад.

Маълум мешавад, ки аслан ду вариант барои истифодаи протоколи URI вуҷуд дорад:

  1. Истифодаи бе параметрҳо: Мо барои ҳама системаҳои навъи худ як маҷмӯи протоколҳо эҷод мекунем СИДМАНДТ, мисли AAA200, BBB200 ва ғайра. Агар ба шумо танҳо лозим аст, ки системаи дилхоҳро оғоз кунед, пас ин вариант комилан қобили кор аст, аммо дар ҳолати мо он мувофиқ нест, зеро ҳадди аққал шумо мехоҳед воридшавии корбарро интиқол диҳед, аммо ин тавр карда намешавад.
  2. Бо истифода аз як барномаи бастабандӣ барои занг sapshcut.exe ё sapgui.exe. Моҳияти ин барнома оддӣ аст - он бояд сатреро, ки браузер тавассути протоколи веб ба он интиқол медиҳад, бигирад ва онро ба намояндагӣ, ки Windows қабул мекунад, табдил диҳад, яъне. ҳама рамзҳои аломатҳоро ба аломатҳо бармегардонад (шояд ҳатто сатрро мувофиқи параметрҳо таҳлил кунад) ва аллакай SAP GUI-ро бо фармони дурусти кафолатдодашуда даъват мекунад. Дар ҳолати мо, он низ комилан мувофиқ нест (бинобар ин ман ҳатто онро нанавиштам), зеро барои мо илова кардани протокол дар ҳама компютерҳои корбар кофӣ нест (дар дохили домен ин ҳоло ҳам хуб аст, гарчанде ки беҳтар аст аз ин амал дурӣ ҷӯед), аммо дар ин ҷо ба мо лозим меояд, ки барномаро дар компютер бештар ҷойгир кунед ва инчунин ҳамеша боварӣ ҳосил кунед, ки он ҳангоми аз нав насб кардани нармафзор дар компютер нест намешавад.

Онхое. Мо инчунин ин интихобро барои мо номувофиқ месозем.

Дар ин лаҳза ман аллакай фикр мекардам, ки ман бояд бо идеяи оғоз кардани SAP GUI бо параметрҳои зарурӣ аз браузер видоъ кунам, аммо баъд фикре пайдо шуд, ки шумо метавонед дар SAP Logon миёнабур созед ва онро ба мизи кории худ нусхабардорӣ кунед. Ман ин усулро як маротиба истифода бурдам, аммо пеш аз он ман ба таври махсус ба файли миёнабур нигоҳ накарда будам. Ва маълум шуд, ки ин миёнабур як файли матнии муқаррарӣ бо тамдид аст .sap. Ва агар шумо онро дар Windows иҷро кунед, SAP GUI бо параметрҳое, ки дар ин файл нишон дода шудаанд, оғоз мешавад. "Бинго!"

Формати ин файл тақрибан чунин аст (инчунин метавонад транзаксия ҳангоми оғозёбӣ оғоз шавад, аммо ман онро сарфи назар кардам):

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

Чунин ба назар мерасад, ки ҳама чиз лозим аст: идентификатори система, муштарӣ, номи корбар ва ҳатто парол. Ва ҳатто параметрҳои иловагӣ: ном - унвони тиреза, GuiSize — андозаи равзанаи коркунанда (экрани пурра ё не) ва Истифодаи такрорӣ — оё кушодани равзанаи нав ё истифодаи равзанаи аллакай кушода бо ҳамон система зарур аст. Аммо дарҳол як нозуки пайдо шуд - маълум шуд, ки парол дар SAP Logon муқаррар карда намешавад, хат баста шудааст. Маълум шуд, ки ин бо сабабҳои амниятӣ анҷом дода шудааст: он ҳама миёнабурҳои дар SAP Logon сохташударо дар файл нигоҳ медорад. sapshortcut.ini (Наздик saplogon.ini дар профили корбари Windows) ва дар он ҷо, гарчанде ки онҳо рамзгузорӣ шудаанд, онҳо аз ҳад зиёд рамзгузорӣ нашудаанд ва агар хоҳед, онҳоро метавон рамзкушоӣ кард. Аммо шумо метавонед инро тавассути тағир додани арзиши як параметр дар реестр ҳал кунед (қимати пешфарз 0):

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

Ин майдони Рамзро барои ворид шудан ба шакли эҷоди миёнабур дар SAP Logon мекушояд:

Оғози SAP GUI аз браузер

Ва вақте ки шумо паролро дар ин майдон ворид мекунед, он дар сатри мувофиқ ҷойгир карда мешавад
sapshortcut.ini, аммо вақте ки шумо миёнабурро ба мизи корӣ кашола мекунед, он дар он ҷо пайдо намешавад - аммо шумо метавонед онро дастӣ ба он ҷо илова кунед. Рамз рамзгузорӣ шудааст, барои 111111 он чунин хоҳад буд: PW_49B02219D1F6, барои 222222 - PW_4AB3211AD2F5. Аммо мо бештар ба он таваҷҷӯҳ дорем, ки ин парол ба як роҳ новобаста аз компютери мушаххас рамзгузорӣ шудааст ва агар паролро ба гузарвожаи аввала барқарор кунем, мо метавонем дар ин соҳа як арзиши қаблан маълумро истифода барем. Хуб, агар мо хоҳем, ки пароли ба таври тасодуфӣ сохташударо истифода барем, мо бояд алгоритми ин рамзро фаҳмем. Аммо аз рӯи мисолҳои овардашуда, ин корро кардан душвор нест. Дар омади гап, дар SAP GUI 7.40 ин майдон аз форма тамоман нест шуд, аммо он файлро бо пароли пуркардашуда дуруст қабул мекунад.

Яъне, маълум мешавад, ки дар браузер ба шумо лозим аст, ки истиноди файли дорои тамдиди .sap ва формати дилхоҳро клик кунед - ва он пешниҳод мекунад, ки онро ҳамчун файл ба монанди SAP GUI Shortcut (табиист дар компютер) кушоед. бо насби SAP GUI) ва равзанаи SAP GUI-ро бо параметрҳои муайяншуда мекушояд (агар ҷуфти SID ва муштарӣ дар рӯйхати SAP Logon дар ин компютер бошанд).

Аммо, маълум аст, ки ҳеҷ кас файлҳоро пешакӣ эҷод намекунад ва онҳоро дар сайт нигоҳ медорад - онҳо бояд дар асоси параметрҳои зарурӣ тавлид карда шаванд. Масалан, шумо метавонед скрипти PHP-ро барои тавлиди миёнабурҳо эҷод кунед (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";
?>

Агар шумо номи корбар ва паролро нишон надиҳед, шумо равзанаи зеринро хоҳед гирифт, ки логин ва паролро дархост мекунад:

Оғози SAP GUI аз браузер

Агар шумо танҳо логинро гузаред, майдони воридшавӣ пур карда мешавад ва майдони парол холӣ хоҳад буд. Агар мо ба корбар ҳам логин ва ҳам парол диҳем, аммо корбар дар компютер калиди EnablePassword дар феҳрист дар бахши [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] ба 0 гузошта шудааст, пас мо ҳамон чизро мегирем. Ва танҳо агар ин калид ба 1 муқаррар карда шавад ва мо ҳам ном ва ҳам пароли ибтидоиро гузаронем, система фавран аз шумо хоҳиш мекунад, ки пароли нави доимиро ду маротиба ворид кунед. Ин чизест, ки мо бояд ба даст орем.

Дар натиҷа, мо маҷмӯи зерини вариантҳои баррасишударо ҳамчун намунаи ҳамаи гуфтаҳои дар боло зикршуда дорем:

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

Варианти охирин ба ман мувофиқ буд. Аммо ба ҷои тавлиди миёнабурҳои SAP, шумо инчунин метавонед, масалан, тавлиди файлҳои CMD-ро истифода баред, ки ҳангоми кушодани браузер инчунин равзанаи SAP GUI-ро барои шумо мекушояд. Дар зер мисол оварда шудааст (sapguicmd.php) мустақиман SAP GUI-ро бо сатри пурраи пайвастшавӣ бидуни танзими 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";
?>

Манбаъ: will.com

Илова Эзоҳ