-
Chris Fauvel
- PowerBuilder
- Monday, 30 June 2025 06:31 PM UTC
We recently got new laptops with Windows 11 Enterprise. These new laptops have been configured to take away Admin rights, however the issue is present on my new laptop which has admin rights.
The issue:
In several spots in our powerbuilder 11.5 app, we call various EXEs, that we have created in C#.net, using the WScript.Shell.Run command.
On our older laptops having windows 10 enterprise there is no problem. On the new laptops we get an error when we call the RUN method of the OleObject.
The error is not very helpful: "Error calling external object function run at line 47 in function wf_create_new_pdf_from_pages of object w_split_pdf."
The error is from the: "lole_WScript_Shell.Run(ls_run , 2, TRUE) // 2 = Minimized, TRUE = Wait For App to Finish" call
I am thinking that Windows 11 doesn't support Wscript.Shell anymore, or at least there is some disconnect between PB11.5 and Windows 11.
Can someone help me? Or should I just use the P-Script RUN command (as I have tried to do as a workaround - it does work BTW)?
string ls_pages_from_sle, ls_pages_parm, ls_temp, ls_run, ls_drive, ls_dirpath, ls_filename, ls_parsed_pages[]
int li_page_sections, li_index, li_retval
OleObject lole_WScript_Shell
//clf 06/27/2025 new variables for testing
long ll_rtc
ii_temp_pdf_counter = ii_temp_pdf_counter + 1
is_temp_pdf_filename = is_pdf_temp_processing_folder + "\temp_" + String(ii_temp_pdf_counter) + ".pdf"
ls_run = '"' + is_split_exe_path + '" "' + is_local_pdf_filepath_original + '" "' + is_temp_pdf_filename + '" "' + is_all_pages_expanded + '"'
TRY
lole_WScript_Shell = CREATE OleObject
li_retval = lole_WScript_Shell.ConnectToNewObject("WScript.Shell")
IF li_retval <> 0 THEN
MessageBox("", "Unable to connect to OLE object WScript.Shell")
IF gnv_app.of_get_log_pdf_activity() THEN
SQLCA.usp_bto_executionlog_insert("PDF Activity", gnv_app.null__datetime, gnv_app.null__datetime, gnv_app.null__long, gnv_app.null__long, gnv_app.null__long, gnv_app.null__string , gnv_app.null__string, gnv_app.null__long, "User " + gnv_app.of_getuserid() + " was unable to connect to OLE object WScript.Shell")
END IF
li_retval = -1
ELSE
//clf 06/27/2025 comment for testing...when uncommented it throws an error on windows 11 laptop, but not on windows 10 laptop
lole_WScript_Shell.Run(ls_run , 2, TRUE) // 2 = Minimized, TRUE = Wait For App to Finish
ll_rtc = run(ls_run) //clf 06/27/2025 this is my workaround from using the WScript.shell ..RUN command
IF FileExists(is_temp_pdf_filename) THEN
IF gnv_app.of_get_log_pdf_activity_verbose() THEN
SQLCA.usp_bto_executionlog_insert("PDF Activity", gnv_app.null__datetime, gnv_app.null__datetime, gnv_app.null__long, gnv_app.null__long, gnv_app.null__long, gnv_app.null__string , gnv_app.null__string, gnv_app.null__long, "User " + gnv_app.of_getuserid() + " successfully created new PDF '" + is_temp_pdf_filename + "' from page range '" + ls_pages_from_sle + "'")
END IF
// Make an extra local copy of the temp PDF file so the original being open in the PDF viewer will not be an issue.
is_temp_pdf_copy_filename = is_pdf_temp_processing_folder + "\temp_" + String(ii_temp_pdf_counter) + "_copy.pdf"
lb_retval = CopyFileA(is_temp_pdf_filename, is_temp_pdf_copy_filename, lb_false)
IF lb_retval = FALSE THEN
MessageBox("", "An error occurred duplicating local PDF. Local: " + is_temp_pdf_filename + ", Copy: " + is_temp_pdf_copy_filename)
IF gnv_app.of_get_log_pdf_activity() THEN
SQLCA.usp_bto_executionlog_insert("PDF Activity", gnv_app.null__datetime, gnv_app.null__datetime, gnv_app.null__long, gnv_app.null__long, gnv_app.null__long, gnv_app.null__string , gnv_app.null__string, gnv_app.null__long, "User " + gnv_app.of_getuserid() + " encountered an error copying local PDF. Local: " + is_temp_pdf_filename + ", Copy: " + is_temp_pdf_copy_filename)
END IF
RETURN -1
ELSE
IF NOT FileExists(is_temp_pdf_copy_filename) THEN
IF gnv_app.of_get_log_pdf_activity() THEN
SQLCA.usp_bto_executionlog_insert("PDF Activity", gnv_app.null__datetime, gnv_app.null__datetime, gnv_app.null__long, gnv_app.null__long, gnv_app.null__long, gnv_app.null__string , gnv_app.null__string, gnv_app.null__long, "User " + gnv_app.of_getuserid() + " FAILED to copy local PDF file. Local: " + is_temp_pdf_filename + ", Copy: " + is_temp_pdf_copy_filename)
END IF
RETURN -1
ELSE
IF gnv_app.of_get_log_pdf_activity_verbose() THEN
SQLCA.usp_bto_executionlog_insert("PDF Activity", gnv_app.null__datetime, gnv_app.null__datetime, gnv_app.null__long, gnv_app.null__long, gnv_app.null__long, gnv_app.null__string , gnv_app.null__string, gnv_app.null__long, "User " + gnv_app.of_getuserid() + " successfully copied local PDF file. Local: " + is_temp_pdf_filename + ", Copy: " + is_temp_pdf_copy_filename)
END IF
END IF
END IF
RETURN 1
END IF
END IF
CATCH (Throwable lth_exception)
li_retval = -1
FINALLY
DESTROY lole_WScript_Shell
END TRY
Find Questions by Tag
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.