js調用exe,js操作註冊表
阿新 • • 發佈:2019-03-22
image ftw shell. node 瀏覽器 current com 路徑 自定義
從網頁中通過自定義URL Protocol調用本地程序,需要將協議寫到註冊表中。
瀏覽器在解析到自定義URL Protocol之後,尋找註冊表,通過註冊表啟動相應的程序並傳入參數。
協議裏面需要記錄本地程序的路徑信息。
方式一、註冊表文件格式如下:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\MS] "URL Protocol"="C:\\MS.exe" @="MSProtocol" [HKEY_CLASSES_ROOT\WST\DefaultIcon] @="C:\\MS.exe,1" [HKEY_CLASSES_ROOT\WST\shell] [HKEY_CLASSES_ROOT\WST\shell\open] [HKEY_CLASSES_ROOT\WST\shell\open\command] @="\"C:\\MS.exe\"\"%1\""
復制到txt文件,然後另存為ms.reg文件,打開運行文件;
方式二、控制臺程序(C#)如下:
try { List<ProtocolInfo> protocalInfos = ProtocolInfo.GetProtocolInfo(string.Format("{0}\\ProtocolInfo.xml", Environment.CurrentDirectory)); if (protocalInfos == null || protocalInfos.Count == 0) Console.WriteLine("未獲取協議的配置信息!請確保配置文件 ProtocolInfo.xml 在當前目錄下。"); string nodeName = protocalInfos[0].NodeName; string programFullPath = string.Format("{0}\\{1}", Environment.CurrentDirectory, nodeName); RegistryKey key = Registry.ClassesRoot; string a = (string)key.GetValue(nodeName, true); if (!key.Name.Contains(nodeName)) { RegistryKey software = key.CreateSubKey(protocalInfos[0].NodeName); software.SetValue("URL Protocol", programFullPath); software.SetValue("", protocalInfos[0].ProtocolName); RegistryKey softwareDefaultIcon = software.CreateSubKey("DefaultIcon"); softwareDefaultIcon.SetValue("", string.Format("{0},{1}", programFullPath, 1)); RegistryKey softwareShell = software.CreateSubKey("shell"); softwareShell = softwareShell.CreateSubKey("open"); softwareShell = softwareShell.CreateSubKey("command"); softwareShell.SetValue("", string.Format("\"{0}\" \"%{1}\"", programFullPath, 1)); } } catch(Exception ex) { Console.Write(ex.Message); }
方式三、部署添加註冊表(C#)如下:
註冊表頁面
js調用exe,js操作註冊表