小工具内的DLL [英] Dll inside gadget

查看:115
本文介绍了小工具内的DLL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好

如何在小工具代码中使用dll以及是否需要重新注册dll

how can i use a dll inside the gadget code and if it is required to regsiter the dll

请任何一个知道答案的人答复

please any one know answer reply

谢谢

Fathi S. Elashery

Fathi S. Elashery

推荐答案

首先,您需要将DLL打包在小工具中,然后在小工具启动期间手动将其注册到HKCU.如果可以的话,这也是个好习惯,一旦完成使用,将其删除,这样就不会留下恶意注册表项.不幸的是,小工具没有关闭"或卸载"事件,因此并非总是可能.

如果您查看我的 var gadgetPath = System.Gadget.path;
var oShell = new ActiveXObject ("WScript.Shell");
RegisterDSXLib();
var DSXLib =新的ActiveXObject("DSXLib.DSX");

...
功能RegisterDSXLib() {
试试{
oShell.RegWrite("HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F-8472-68869273C4EA} \\","DSXLib.DSX","REG_SZ" );
oShell.RegWrite("HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F-8472-68869273C4EA} \\实现的类别\\\ {40FC6ED5-2438-11438-11CF-A3DB-080036F12502} \\,"," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F-8472-68869273C4EA} \\ InprocServer32 \\, gadgetPath +"\\ DSXLib.dll","REG_SZ");
oShell.RegWrite("HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F-8472-68869273C4EA} \\ InprocServer32 \ \ ThreadingModel," Apartment," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F -8472-68869273C4EA} \\ ProgID \\," DSXLib.DSX," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F- 8472-68869273C4EA} \\ TypeLib \\," {B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ CLSID \\ {0CEB6AEC-51FB-475F-8472-68869273C4EA} \\ VERSION \\," 2.0," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ DSXLib.DSX \\","DSXLib.DSX","REG_SZ");
oShell.RegWrite("HKCU \\ Software \\ Classes \\ DSXLib.DSX \\ Clsid \\","{0CEB6AEC-51FB-475F-8472-68869273C4EA }," REG_SZ);
oShell.RegWrite(" HKCU \\ Software \\ Classes \\ TypeLib \\ {B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855} \\ 2.0 \\," DSXLib, "REG_SZ");
oShell.RegWrite("HKCU \\ Software \\ Classes \\ TypeLib \\ {B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855} \\ 2.0 \\ 0 \\ win32 \\",gadgetPath +"\\ DSXLib.dll","REG_SZ");
oShell.RegWrite("HKCU \\ Software \\ Classes \\ TypeLib \\ {B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855} \\ 2.0 \\ FLAGS \\," 0," REG_SZ);
oShell.RegWrite("HKCU \\ Software \\ Classes \\ TypeLib \\ {B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855} \\ 2.0 \\ HELPDIR \\",gadgetPath,"REG_SZ");
} catch (err){System.Debug.outputString("RegisterDSXLib:" + err)}
}

Firstly, you need to package the DLL inside the Gadget, then you need to register it manually during the Gadget startup to HKCU. If you can, it's also good practice to remove it once you've finished with it so you don't leave rogue registry entries. Unfortunately, Gadgets don't have a "close" or "unload" event, so this isn't always possible.

If you have a look at either my WMP or Asteroids Gadgets, you'll see how this is done. Here's the core of it:

var gadgetPath = System.Gadget.path;
var oShell = new ActiveXObject("WScript.Shell");
RegisterDSXLib();
var DSXLib = new ActiveXObject("DSXLib.DSX");

...

function RegisterDSXLib() {
try{
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\","DSXLib.DSX", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\Implemented Categories\\{40FC6ED5-2438-11CF-A3DB-080036F12502}\\", "", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\InprocServer32\\", gadgetPath + "\\DSXLib.dll", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\InprocServer32\\ThreadingModel", "Apartment", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\ProgID\\", "DSXLib.DSX", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\TypeLib\\", "{B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\CLSID\\{0CEB6AEC-51FB-475F-8472-68869273C4EA}\\VERSION\\", "2.0", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\DSXLib.DSX\\", "DSXLib.DSX", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\DSXLib.DSX\\Clsid\\", "{0CEB6AEC-51FB-475F-8472-68869273C4EA}", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\TypeLib\\{B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}\\2.0\\", "DSXLib", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\TypeLib\\{B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}\\2.0\\0\\win32\\", gadgetPath + "\\DSXLib.dll", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\TypeLib\\{B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}\\2.0\\FLAGS\\", "0", "REG_SZ");
oShell.RegWrite("HKCU\\Software\\Classes\\TypeLib\\{B45FD794-9BE7-4B5D-BDD5-1FAD8A4D3855}\\2.0\\HELPDIR\\", gadgetPath, "REG_SZ");
} catch(err) {System.Debug.outputString("RegisterDSXLib: "+err)}
}


这篇关于小工具内的DLL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆