Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3570

Re: SapROTWr.dll is there an x64 version ?

$
0
0

Hello Simon,

 

it works, I tried it. All you have to do is to set up two things in the registry:

 

  1. Add the entry DllSurrogate in the key HKCR\Wow6432Node\AppID\{E2779C61-F87E-4038-98A0-1D9E71334706} without a value.
    002.JPG
  2. Create a new key in HKLM\Software\Classes\AppID with the GUID {E2779C61-F87E-4038-98A0-1D9E71334706} without any values.


Now you can enjoy the SAP GUI ROT Wrapper in an x64 environment.

 

Here my test script:

 

#-Begin-----------------------------------------------------------------  #-Sub Main------------------------------------------------------------    Function Main() {      [Reflection.Assembly]::LoadFile($PSScriptRoot + "\saprotwrlib.dll") > $Null      [Reflection.Assembly]::LoadFile($PSScriptRoot + "\sapfewselib.dll") > $Null      $Size = [System.IntPtr]::Size      If ($Size -eq 4) {        Write-Host "`r`nVersion x86`r`n"      }      ElseIf ($Size -eq 8) {        Write-Host "`r`nVersion x64`r`n"      }      $Wrapper = New-Object -ComObject "SapROTWr.SapROTWrapper"      #[Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic") > $Null      #$Wrapper = [Microsoft.VisualBasic.Interaction]::CreateObject("SapROTWr.SapROTWrapper")      If ($Wrapper -eq $Null) {          Break      }      $RotSAPGUI = $Wrapper.GetROTEntry("SAPGUI")      If ($RotSAPGUI -eq $Null) {        Break      }      $Application = $RotSAPGUI.GetType().InvokeMember("GetScriptingEngine",        [System.Reflection.Bindingflags]::InvokeMethod,        $null, $RotSAPGUI, $null, $null, $null, $null)      [sapfewselib.GuiApplication]$Application =        [System.Runtime.InteropServices.Marshal]::CreateWrapperOfType($Application,        [sapfewselib.GuiApplicationClass])      If ($Application -eq $Null) {        Break      }      $Connection = $Application.Children.Item(0)      [sapfewselib.GuiConnectionClass]$Connection =        [System.Runtime.InteropServices.Marshal]::CreateWrapperOfType($Connection,        [sapfewselib.GuiConnectionClass])      If ($Connection -eq $Null) {        Break      }      $Session = $Connection.Children.Item(0)      [sapfewselib.GuiSession]$Session =        [System.Runtime.InteropServices.Marshal]::CreateWrapperOfType($Session,        [sapfewselib.GuiSessionClass])      If ($Session -eq $Null) {        Break      }      $SessionInfo = $Session.Info      [sapfewselib.GuiSessionInfo]$SessionInfo =        [System.Runtime.InteropServices.Marshal]::CreateWrapperOfType($SessionInfo,        [sapfewselib.GuiSessionInfoClass])      If ($SessionInfo -eq $Null) {        Break      }      Write-Host $SessionInfo.SystemName      Write-Host $SessionInfo.Client      Write-Host $SessionInfo.Transaction    }  #-Main----------------------------------------------------------------    Main

#-End-------------------------------------------------------------------

 

It is possible that your SAP GUI ROT wrapper has another GUID, you can find it in the GuidAttribute of the manifest of the assembly.

 

003.jpg

 

Let us know your results.

 

Cheers

Stefan


Viewing all articles
Browse latest Browse all 3570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>