ASP learning: Remote registration of your own components

xiaoxiao2021-03-05  28

Make ASP programs a lot of benefits, but one thing, the DLL must be registered to call in ASP. If it is your own server, it is okay, but if it is a virtual server, there is no way to use it.

How to register our DLL on the remote host? Use the shell on the server! ! !

Let's upload your DLL file upload to the server through FTP or HTTP, then make an ASP program, call wscript.shell to execute the regsvr32 command:

Set Oshell = CreateObject ("wscript.shell")

Oshell.Run "C: /Winnt/System32/REGSVR32.EXE / S D: /XXX.DLL", 0, FALSE

Of course, if the other party's server is very good, this code may not use it, but no matter what, learning is also good, :)

Here, you must remind those friends who rent space, whether your server limits the use of WScript.Shell? Still be careful

The full code is as follows, saved as .asp can be used:

<% Response.buffer = true%>

<% Server.scripttimeout = 500

Dimfolderpath, frMfilepath

frmfolderPath = Request.form ("frmfolderpath")

frMfilePath = Request.form ("frmdllpath")

frmmethod = Request.form ("frmmethod")

btnreg = Request.form ("btnreg")

%>

regsvr32.asp </ title></p> <p><Style type = "text / css"></p> <p>Font-size: 14px; font-weight: bold; color: blue}</p> <p>.Fs {font-family: Veranda; Font-size: 12px; Border-Width: 4px; border-color: green;</p> <p>Margin-left: 2px; margin-right: 2px}</p> <p>Td {margin-left: 6px; Margin-Right: 6px; padding-left: 12px; padding-right: 12px}</p> <p></ Style></p> <p></ HEAD></p> <p><Body></p> <p><Form name = "regform" Method = "post"></p> <p><Table border = 0 Cellspacing = 6 cellpadding = 6 marginwidth = 6></p> <p><Tr></p> <p><TD VALIGN = TOP></p> <p><Fieldset ID = fs1 name = fs1 class = fs></p> <p><Legend class = legend> Regsvr functions </ legend></p> <p>INSERT path to DLL Directory <br></p> <p><Input type = text name = "frmfolderpath" value = "<% = frmfolderpath%>"> <br> <input type = submit name = btnfilelist value = "build file list"> <br></p> <p><%</p> <p>If Request.form ("btnfilelist") <> "" or btnreg <> "" ""</p> <p>Set registerfiles = new CLSREGISTER</p> <p>Registerfiles.echob ("<B> Select File </ b>")</p> <p>Call registerfiles.init (frMfolderpath)</p> <p>Registerfiles.echob ("<br> <input type = Submit name = btnreg value =" & chr (34) _</p> <p>& "REG / Unreg" & chr (34) & ">")</p> <p>IF Request.form ("btnreg") <> ""</p> <p>Call registerfiles.register (frmfilepath, frmmethod)</p> <p>END IF</p> <p>Set registerfiles = Nothing</p> <p>END IF</p> <p>%></p> <p></ Fieldset></p> <p></ Td></p> <p></ TR></p> <p></ TABLE></p> <p></ Form></p> <p></ Body></p> <p></ Html></p> <p><%</p> <p>Class CLSREGISTER</p> <p>Private m_ofs</p> <p>Public property let offs (Objofs)</p> <p>m_ofs = Objofs</p> <p>End Property</p> <p>Public property get off ()</p> <p>Set ofs = server.createObject ("scripting.filesystemobject")</p> <p>End Property</p> <p>Sub init (strroot) 'root to search (C:, D:, E :)</p> <p>Dim Odrive, Orootdir</p> <p>IF OF $ FOLDEREXISTS (STRROOT) THEN</p> <p>IF len (strroot) <3 Then 'Must Be a Drive</p> <p>Set ODRIVE = OFS.GETDRIVE (STRROOT)</p> <p>Set Orootdir = ODRIVE.ROTFOLDER</p> <p>Else</p> <p>Set Orootdir = OFS.GETFOLDER (STRROOT)</p> <p>END IF</p> <p>Else</p> <p>ECHOB ("<B> Folder (" & strroot & ") Not found.")</p> <p>EXIT SUB</p> <p>END IF</p> <p>Stroot = OROOTDIR</p> <p>Echo ("<select name =" & chr (34) & "frmdllpath" & chr (34) & ">")</p> <p>Call getAllDlls (Orootdir)</p> <p>Echob ("</ select>")</p> <p>BuildOptions</p> <p>End subs getAllDlls (OparentFolder) 'lists all DLL and OCX files through FSO</p> <p>Dim Osubfolders, Ofile, Ofiles</p> <p>Set Osubfolders = OparentFolder.subfolders</p> <p>Set opfiles = oparentfolder.files</p> <p>For Each ofile In Opfiles</p> <p>If Right (LCase (Ofile (Ofile.Name), 4) = ".dll" or right (Lcase (Ofile.Name), 4) = ".ocx" then</p> <p>Echo ("<option value =" & chr (34) & fLE.PATH & CHR (34) & ">"</p> <p>& Ofile.Name & "</ option>")</p> <p>END IF</p> <p>NEXT</p> <p>ON Error ResMe next</p> <p>For Each Ofolder in Osubfolders' Iteerate All Folders in Drive</p> <p>Set ofiles = ofolder.files</p> <p>For Each ofile IN Ofiles</p> <p>If Right (LCase (Ofile (Ofile.Name), 4) = ".dll" or right (Lcase (Ofile.Name), 4) = ".ocx" then</p> <p>Echo ("<option value =" & chr (34) & fLE.PATH & CHR (34) & ">"</p> <p>& Ofile.Name & "</ option>")</p> <p>END IF</p> <p>NEXT</p> <p>Call getAllDlls (OFOLDER)</p> <p>NEXT</p> <p>ON Error Goto 0</p> <p>End Sub</p> <p>Sub Register (StrfilePath, Regmethod)</p> <p>Dim Thefile, Strfile, Oshell, EXITCODE</p> <p>Set thefile = OFS.GETFILE (STRFILEPATH)</p> <p>Strfile = thefile.path</p> <p>Set Oshell = CreateObject ("wscript.shell")</p> <p>If regmethod = "reg" the 'register</p> <p>Oshell.Run "C: /Winnt/system32/REGSVR32.EXE / S" & Strfile, 0, False</p> <p>EXITCODE = Oshell.Run ("c: /winnt/system32/regsvr32.exe / s" & strfile, 0, false)</p> <p>Echob ("Regsvr32.exe EXITCODE =" & exitcode)</p> <p>Else 'unregister</p> <p>Oshell.Run "c: /winnt/system32/regsvr32.exe / u / s" & strfile, 0, false</p> <p>EXITCODE = Oshell.Run ("c: /winnt/system32/regsvr32.exe / u / s" & strfile, 0, false)</p> <p>Echob ("Regsvr32.exe EXITCODE =" & exitcode)</p> <p>END IF</p> <p>Cleanup Oshell</p> <p>End Sub</p> <p>Sub BuildOptions</p> <p>ECHOB ("Register: <input type = radio name = frmmeth value = reg checked>")</p> <p>Echob ("Unregister: <Input Type = Radio Name = frmmethod value = unreg>")</p> <p>End Sub</p> <p>Function Echo (STR)</p> <p>Echo = response.write (str & vbcrlf)</p> <p>END FUNCTION</p> <p>Function Echob (STR)</p> <p>Echob = response.write (str & "<br>" & vbcrlf)</p> <p>END FUNCTION</p> <p>SUB Cleanup (OBJ)</p> <p>IF isobject (obj) THEN</p> <p>Set obj = Nothing</p> <p>END IF</p> <p>End Sub</p> <p>SUB class_Terminate ()</p> <p>Cleanup OFS</p> <p>End Sub</p> <p>END CLASS</p> <p>%></p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-32171.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="32171" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.041</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'pFDnQj9Ff4O4E_2BqaGx56u32I7_2BipMTqk_2FTdis09LzmTMA_2FB0DvGC_2Fc2kP8iIo80MAoqMoH5D1_2Fs2kHMOaBDXmA_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>