உலாவியில் இருந்து SAP GUI ஐ துவக்குகிறது

இந்தக் கட்டுரையை நான் முதலில் எழுதியது என் வலைப்பதிவு, பின்னர் தேடி மீண்டும் நினைவில் வைத்துக் கொள்ள வேண்டாம், ஆனால் யாரும் வலைப்பதிவைப் படிக்காததால், இந்த தகவலை யாராவது பயனுள்ளதாகக் கருதினால், அனைவருடனும் பகிர்ந்து கொள்ள விரும்பினேன்.

SAP R/3 அமைப்புகளில் கடவுச்சொல் மீட்டமைப்பு சேவையின் யோசனையில் பணிபுரியும் போது, ​​​​ஒரு கேள்வி எழுந்தது - உலாவியில் இருந்து தேவையான அளவுருக்களுடன் SAP GUI ஐ எவ்வாறு தொடங்குவது? இந்த யோசனை ஒரு இணைய சேவையைப் பயன்படுத்துவதைக் குறிக்கிறது என்பதால், முதலில் SAP GUI இலிருந்து ஒரு SOAP கோரிக்கைக்கு பதிலளித்து, கடவுச்சொல்லை ஆரம்ப நிலைக்கு மீட்டமைப்பதற்கான ஸ்கிரிப்டுடன் வலைப்பக்கத்திற்கு இணைப்புடன் ஒரு கடிதத்தை அனுப்பவும், பின்னர் பயனருக்குக் காண்பிக்கவும். வெற்றிகரமான கடவுச்சொல் மீட்டமைப்பு மற்றும் இந்த ஆரம்ப கடவுச்சொல்லைக் காண்பிக்கும் செய்தியைப் பற்றிய ஒரு செய்தி, SAP GUI ஐத் தொடங்க இந்தப் பக்கமும் ஒரு இணைப்பைக் கொண்டிருக்க விரும்புகிறேன். மேலும், இந்த இணைப்பு விரும்பிய கணினியைத் திறக்க வேண்டும், மேலும், உள்நுழைவு மற்றும் கடவுச்சொல் புலங்களை ஒரே நேரத்தில் நிரப்ப வேண்டும்: பயனர் உற்பத்தி கடவுச்சொல்லை இரண்டு முறை மட்டுமே நிரப்ப வேண்டும்.

SAP உள்நுழைவைத் தொடங்குவது எங்கள் நோக்கத்திற்காக சுவாரஸ்யமானது அல்ல, மேலும் sapgui.exe ஐ இயக்கும்போது கிளையன்ட் மற்றும் பயனர் பெயரைக் குறிப்பிடுவது சாத்தியமில்லை, ஆனால் SAP உள்நுழைவில் வரையறுக்கப்படாத கணினியைத் தொடங்குவது சாத்தியமாகும். மறுபுறம், தன்னிச்சையான சேவையக அளவுருக்களுடன் SAP GUI ஐத் தொடங்குவது மிகவும் பொருத்தமானதல்ல: பயனரின் கடவுச்சொல்லை மீட்டமைப்பதில் உள்ள சிக்கலை நாங்கள் தீர்க்கிறோம் என்றால், பெரும்பாலும் SAP உள்நுழைவில் அவருக்குத் தேவையான அமைப்புகளுடன் தேவையான வரி ஏற்கனவே உள்ளது. தனது சொந்தத்தை குழப்ப வேண்டிய அவசியமில்லை. ஆனால் குறிப்பிட்ட தேவைகள் SAP GUI குறுக்குவழி தொழில்நுட்பம் மற்றும் 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');
}

தீர்வு மோசமானது: முதலாவதாக, இது இன்டர்நெட் எக்ஸ்ப்ளோரரில் மட்டுமே இயங்குகிறது, இரண்டாவதாக, உலாவியில் பொருத்தமான பாதுகாப்பு அமைப்புகள் தேவை, இது ஒரு நிறுவனத்தில் டொமைன் மட்டத்தில் தடைசெய்யப்படலாம், அனுமதித்தாலும் கூட, உலாவி பயமுறுத்தும் சாளரத்தைக் காட்டுகிறது. பயனருக்கு எச்சரிக்கை:

உலாவியில் இருந்து SAP GUI ஐ துவக்குகிறது

இணையத்தில் தீர்வை #2 கண்டேன்: உங்கள் சொந்த வலை நெறிமுறையை உருவாக்குதல். HKEY_CLASSES_ROOT பிரிவில் உள்ள பதிவேட்டில் Windows இல் நாமே பதிவு செய்யும் நெறிமுறையைக் குறிக்கும் இணைப்பைப் பயன்படுத்தி நமக்குத் தேவையான பயன்பாட்டைத் தொடங்க அனுமதிக்கிறது. இந்தப் பிரிவில் 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 ஆக மாற்றியது. சரி, மற்ற எழுத்துக்கள் ஒரு சதவீத குறியீட்டுடன் அவற்றின் சொந்த எண் குறியீட்டில் குறியாக்கம் செய்யப்படும். மிகவும் விரும்பத்தகாத விஷயம் என்னவென்றால், உலாவி மட்டத்தில் இங்கே எதுவும் செய்ய முடியாது (இங்கே அனைத்தும் தரநிலையின்படி செய்யப்படுகின்றன) - உலாவி அத்தகைய எழுத்துக்களை விரும்பவில்லை, மேலும் விண்டோஸ் கட்டளை மொழிபெயர்ப்பாளர் அத்தகைய குறியாக்கப்பட்ட மதிப்புகளுடன் வேலை செய்யாது. மேலும் ஒரு கழித்தல் - நெறிமுறை பெயர் மற்றும் பெருங்குடல் உட்பட முழு சரமும் ஒரு அளவுருவாக அனுப்பப்படுகிறது (sapgui.shortcut.file:) மேலும், அதே என்றாலும் sapshcut.exe அதற்கான அளவுரு அல்லாத அனைத்தையும் நிராகரிக்க முடியும் ("-" குறியீட்டில் தொடங்குகிறது, பின்னர் பெயர், "=" மற்றும் மதிப்பு), அதாவது. " போன்ற ஒரு வரிsapgui.shortcut.file: -system=SID"அது இன்னும் வேலை செய்யும், பிறகு இடம் இல்லாமல்"sapgui.shortcut.file:-system=SID"இனி வேலை செய்யாது.

கொள்கையளவில், URI நெறிமுறையைப் பயன்படுத்துவதற்கு இரண்டு விருப்பங்கள் உள்ளன என்று மாறிவிடும்:

  1. அளவுருக்கள் இல்லாமல் பயன்படுத்துதல்: எங்கள் அனைத்து வகை அமைப்புகளுக்கும் ஒரு முழு நெறிமுறைகளை உருவாக்குகிறோம் சிட்மண்ட், போன்ற AAA200, பிபிபி 200 மற்றும் பல. நீங்கள் விரும்பிய அமைப்பைத் தொடங்க வேண்டும் என்றால், விருப்பம் மிகவும் வேலை செய்யக்கூடியது, ஆனால் எங்கள் விஷயத்தில் இது பொருந்தாது, ஏனெனில் குறைந்தபட்சம் நீங்கள் பயனர் உள்நுழைவை மாற்ற விரும்புகிறீர்கள், ஆனால் இதை இந்த வழியில் செய்ய முடியாது.
  2. அழைப்பதற்கு ரேப்பர் நிரலைப் பயன்படுத்துதல் sapshcut.exe அல்லது sapgui.exe. இந்த நிரலின் சாராம்சம் எளிதானது - இது இணைய நெறிமுறை வழியாக உலாவி அதற்கு அனுப்பும் சரத்தை எடுத்து விண்டோஸ் பெறும் பிரதிநிதித்துவமாக மாற்ற வேண்டும், அதாவது. அனைத்து எழுத்து குறியீடுகளையும் மீண்டும் எழுத்துகளாக மாற்றுகிறது (ஒருவேளை அளவுருக்களின் படி சரத்தை பாகுபடுத்தும்) மற்றும் ஏற்கனவே உத்தரவாதமான சரியான கட்டளையுடன் SAP GUI ஐ அழைக்கிறது. எங்கள் விஷயத்தில், இது முற்றிலும் பொருத்தமானது அல்ல (அதனால்தான் நான் அதை எழுதவில்லை), ஏனென்றால் எல்லா பயனர் கணினிகளிலும் நெறிமுறையைச் சேர்ப்பது எங்களுக்குப் போதாது (ஒரு டொமைனுக்குள் இது இன்னும் சரியாக இருக்கும், இருப்பினும் இது சிறந்தது இந்த நடைமுறையைத் தவிர்க்கவும்), ஆனால் இங்கே கணினியில் நிரலை இன்னும் அதிகமாக வைக்க வேண்டும், மேலும் கணினியில் மென்பொருள் மீண்டும் நிறுவப்படும்போது அது மறைந்துவிடாது என்பதைத் தொடர்ந்து உறுதிசெய்ய வேண்டும்.

அந்த. இந்த விருப்பமும் எங்களுக்குப் பொருத்தமற்றது என்று நிராகரிக்கிறோம்.

இந்த கட்டத்தில், உலாவியில் இருந்து தேவையான அளவுருக்களுடன் SAP GUI ஐத் தொடங்குவதற்கான யோசனைக்கு நான் விடைபெற வேண்டும் என்று நான் ஏற்கனவே நினைக்க ஆரம்பித்தேன், ஆனால் SAP உள்நுழைவில் குறுக்குவழியை உருவாக்கலாம் என்ற எண்ணம் எனக்கு ஏற்பட்டது. அதை உங்கள் டெஸ்க்டாப்பில் நகலெடுக்கவும். நான் ஒரு முறை இந்த முறையைப் பயன்படுத்தினேன், ஆனால் அதற்கு முன் நான் குறுக்குவழி கோப்பைப் பார்க்கவில்லை. இந்த குறுக்குவழி நீட்டிப்புடன் கூடிய வழக்கமான உரை கோப்பு என்று மாறியது .சாறு. நீங்கள் அதை விண்டோஸில் இயக்கினால், இந்த கோப்பில் குறிப்பிடப்பட்டுள்ள அளவுருக்களுடன் SAP GUI தொடங்கும். "பிங்கோ!"

இந்தக் கோப்பின் வடிவம் தோராயமாகப் பின்வருமாறு உள்ளது (தொடக்கத்தில் ஒரு பரிவர்த்தனை தொடங்கப்பட்டிருக்கலாம், ஆனால் நான் அதைத் தவிர்த்துவிட்டேன்):

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

தேவையான அனைத்தும்: கணினி அடையாளங்காட்டி, கிளையன்ட், பயனர்பெயர் மற்றும் கடவுச்சொல் கூட. மேலும் கூடுதல் அளவுருக்கள்: தலைப்பு - சாளர தலைப்பு, GuiSize - இயங்கும் சாளரத்தின் அளவு (முழுத்திரை அல்லது இல்லை) மற்றும் மறுபயன்பாடு — புதிய சாளரத்தைத் திறக்க வேண்டுமா அல்லது ஏற்கனவே திறந்திருக்கும் அதே அமைப்பில் ஒன்றைப் பயன்படுத்த வேண்டுமா. ஆனால் ஒரு நுணுக்கம் உடனடியாக வெளிப்பட்டது - SAP உள்நுழைவில் கடவுச்சொல்லை அமைக்க முடியாது, வரி தடுக்கப்பட்டது. இது பாதுகாப்பு காரணங்களுக்காக செய்யப்பட்டது என்று மாறியது: இது SAP உள்நுழைவில் உருவாக்கப்பட்ட அனைத்து குறுக்குவழிகளையும் ஒரு கோப்பில் சேமிக்கிறது sapshortcut.ini (அருகில் சப்லோகன்.இனி விண்டோஸ் பயனர் சுயவிவரத்தில்) மற்றும் அங்கு, அவை குறியாக்கம் செய்யப்பட்டிருந்தாலும், அவை மிகவும் வலுவாக குறியாக்கம் செய்யப்படவில்லை, விரும்பினால், அவை மறைகுறியாக்கப்படலாம். ஆனால் பதிவேட்டில் உள்ள ஒரு அளவுருவின் மதிப்பை மாற்றுவதன் மூலம் இதை நீங்கள் தீர்க்கலாம் (இயல்புநிலை மதிப்பு 0):

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

SAP உள்நுழைவில் குறுக்குவழி உருவாக்கும் படிவத்தில் நுழைவதற்கான கடவுச்சொல் புலத்தை இது திறக்கிறது:

உலாவியில் இருந்து SAP GUI ஐ துவக்குகிறது

இந்த புலத்தில் கடவுச்சொல்லை உள்ளிடும்போது, ​​அது தொடர்புடைய வரியில் வைக்கப்படும்
sapshortcut.ini, ஆனால் நீங்கள் ஒரு குறுக்குவழியை டெஸ்க்டாப்பில் இழுத்தால், அது அங்கு தோன்றாது - ஆனால் நீங்கள் அதை கைமுறையாக சேர்க்கலாம். கடவுச்சொல் குறியாக்கம் செய்யப்பட்டுள்ளது, 111111 க்கு இது பின்வருமாறு இருக்கும்: PW_49B02219D1F6, 222222 - PW_4AB3211AD2F5. ஆனால் இந்த கடவுச்சொல் ஒரு வழியில் குறியாக்கம் செய்யப்பட்டுள்ளது என்பதில் நாங்கள் மிகவும் ஆர்வமாக உள்ளோம், குறிப்பிட்ட கணினியிலிருந்து சுயாதீனமாக, மற்றும் கடவுச்சொல்லை ஆரம்ப நிலைக்கு மீட்டமைத்தால், இந்த புலத்தில் முன்பே அறியப்பட்ட மதிப்பைப் பயன்படுத்தலாம். சரி, நாம் தோராயமாக உருவாக்கப்பட்ட கடவுச்சொல்லைப் பயன்படுத்த விரும்பினால், இந்த மறைக்குறியீட்டின் அல்காரிதத்தை நாம் புரிந்து கொள்ள வேண்டும். ஆனால் கொடுக்கப்பட்ட உதாரணங்கள் மூலம் ஆராய, இதைச் செய்வது கடினம் அல்ல. மூலம், SAP GUI 7.40 இல் இந்த புலம் படிவத்திலிருந்து முற்றிலும் மறைந்து விட்டது, ஆனால் அது நிரப்பப்பட்ட கடவுச்சொல்லைக் கொண்ட கோப்பை சரியாக ஏற்றுக்கொள்கிறது.

அதாவது, உலாவியில் நீங்கள் .sap நீட்டிப்பு மற்றும் விரும்பிய வடிவமைப்பைக் கொண்ட ஒரு கோப்பிற்கான இணைப்பைக் கிளிக் செய்ய வேண்டும் - மேலும் அதை SAP GUI குறுக்குவழி (இயற்கையாகவே ஒரு கணினியில்) போன்ற கோப்பாகத் திறக்க முன்வருகிறது. 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_USERSoftwareSAPSAPShortcutSecurity] பிரிவில் 0 என அமைக்கப்பட்ட பதிவேட்டில் EnablePassword விசையை வைத்திருந்தால், அதையே நாம் பெறுவோம். இந்த விசை 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 உள்நுழைவை உள்ளமைக்க வேண்டிய அவசியம் இல்லாமல், 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

கருத்தைச் சேர்