Хөтөчөөс SAP GUI-г эхлүүлж байна

Би энэ нийтлэлийг анх өөрийн нийтлэлдээ бичсэн блог, дараа дахин хайгаад санахгүйн тулд блогийг хэн ч уншдаггүй тул хэн нэгэнд хэрэг болох болов уу гэсэн үүднээс энэ мэдээллийг хүн бүртэй хуваалцахыг хүслээ.

SAP R/3 систем дэх нууц үг шинэчлэх үйлчилгээний санаа дээр ажиллаж байх үед асуулт гарч ирэв - SAP GUI-г шаардлагатай параметрүүдтэй хөтчөөс хэрхэн эхлүүлэх вэ? Энэ санаа нь вэб үйлчилгээг ашиглах зорилготой байсан тул эхлээд SAP GUI-ийн SOAP хүсэлтэд хариу өгч, нууц үгээ анхных руу нь шинэчлэх скрипт бүхий вэб хуудас руу холбоос бүхий захидал илгээж, дараа нь хэрэглэгчдэд үзүүлэх. Нууц үг амжилттай шинэчлэгдсэн тухай мессеж гарч, анхны нууц үгээ харуулсан бол энэ хуудсанд SAP GUI-г эхлүүлэх холбоос байгаасай гэж хүсэж байна. Нэмж дурдахад, энэ холбоос нь хүссэн системээ нээх ёстой бөгөөд нэвтрэх болон нууц үгийн талбаруудыг нэг дор бөглөсөн нь дээр: хэрэглэгч зөвхөн хоёр удаа үр дүнтэй нууц үг оруулах шаардлагатай болно.

SAP Logon-г эхлүүлэх нь бидний зорилгод тийм ч сонирхолтой биш байсан бөгөөд sapgui.exe-г ажиллуулах үед үйлчлүүлэгч болон хэрэглэгчийн нэрийг зааж өгөх боломжгүй байсан ч SAP Logon-д тодорхойлогдоогүй системийг эхлүүлэх боломжтой байсан. Нөгөөтэйгүүр, дурын серверийн параметрүүдтэй SAP GUI-г ажиллуулах нь тийм ч чухал биш байсан: хэрэв бид хэрэглэгчийн нууц үгийг шинэчлэх асуудлыг шийдэж байгаа бол тэр SAP Logon-д шаардлагатай тохиргоотой, шаардлагатай шугамтай байх магадлалтай. өөрийнхөөрөө хутгалдах шаардлагагүй. Гэхдээ заасан шаардлагыг SAP GUI Shortcut технологи болон sapshcut.exe програм нь өөрөө хангасан бөгөөд энэ нь SAP GUI-г тодорхой "товчлол" ашиглан эхлүүлэх боломжтой болгосон.

Асуудлыг шууд шийдвэрлэх: ActiveX объект ашиглан sapshcut.exe-г хөтчөөс шууд эхлүүлэх:

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 Shortcut нь энэ хэсэгт өөрийн гэсэн дэд хэсэгтэй тул та URL протоколын стринг параметрийг хоосон утгатай нэмж болно:

Хөтөчөөс SAP GUI-г эхлүүлж байна

Энэ протокол эхэлнэ sapgui.exe параметртэй /ТОВЧЛОЛУУД, энэ нь бидэнд яг хэрэгтэй зүйл юм:

Хөтөчөөс SAP GUI-г эхлүүлж байна

За, эсвэл бид бүрэн дур зоргоороо протокол хийхийг хүсч байвал (жишээлбэл, sapshcut), дараа нь та дараах 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 түүний хувьд параметр биш бүх зүйлийг хаях боломжтой ("-" тэмдэг, дараа нь нэр, "=" ба утгаараа эхэлдэг), i.e. гэх мэт мөр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 нэвтрэх жагсаалтад байгаа бол).

Гэхдээ хэн ч урьдчилан файл үүсгэж, сайт дээр хадгалахгүй нь ойлгомжтой - тэдгээрийг шаардлагатай параметрүүд дээр үндэслэн үүсгэх ёстой. Жишээлбэл, та товчлол үүсгэхийн тулд 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-г эхлүүлж байна

Хэрэв та зөвхөн нэвтрэлтийг дамжуулбал нэвтрэх талбарыг бөглөж, нууц үгийн талбар хоосон болно. Хэрэв бид хэрэглэгчдэд нэвтрэх болон нууц үгээ хоёуланг нь өгсөн боловч компьютер дээрх хэрэглэгч [HKEY_CURRENT_USERSsoftwareSAPSAPShortcutSecurity] хэсэгт бүртгэл дэх EnablePassword түлхүүрийг 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 Logon тохиргоог хийх шаардлагагүйгээр SAP GUI-г бүрэн холболтын мөртэй шууд эхлүүлнэ:

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

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх