javascript - 如何从代码中以管理员身份运行 Chrome

标签 javascript firefox visual-c++ google-chrome plugins

我需要从插件 dll 代码 (VC++) 以管理员身份运行 Chrome。
但是如果 Chrome 窗口处于事件状态,则新创建的窗口不会获得管理员权限。
我正在从 JavaScript 调用插件 dll 代码。创建新窗口后,我关闭了以前的窗口,但发生了同样的情况。
我需要帮助,因为我的插件需要管理员权限。对于 Firefox,同样如此。
(现在我使用 shellExecute 以管理员身份创建一个新窗口)。

代码片段:

这里我创建了一个 Firefox 实例(所有浏览器都需要类似)

StartNewInstance(BSTR Address)  
{  
    // TODO: Add your implementation code here  
    MessageBox(0,L"Inside",L"ParentName",0);  
    TCHAR szEXEPath[2048];  
    GetModuleFileName ( NULL, szEXEPath, 2048 );  
    SHELLEXECUTEINFO Shex;  
    ZeroMemory( &Shex, sizeof( SHELLEXECUTEINFO ) );  
    Shex.cbSize = sizeof( SHELLEXECUTEINFO );  
    Shex.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;  
    Shex.lpVerb = L"runas";  
    Shex.lpFile = L"C:\\Program Files\\Mozilla Firefox\\firefox.exe";  
    Shex.nShow = SW_SHOWNORMAL;  
    Shex.lpParameters = Address;  
    ShellExecuteEx( &Shex );  
    return true;  
}

最佳答案

您无法按照您尝试的方式轻松解决此问题。大多数浏览器可执行文件都会检查现有实例并重用该实例(如果找到)。有一些特定于浏览器的方法可以通过命令行选项来调整或跳过该检查,以便允许您生成第二个进程,但它们是特定于浏览器的,甚至其中一些浏览器比其他浏览器更卡。

例如,使用 --user-data-dir=c:\some\path 调用 chrome.exe(以管理员身份)将创建一个新的(提升的)第一次调用时实例化,并在后续时间重用它,前提是您在命令行上提供相同的用户数据目录(即使另一个(非提升的)chrome 一直在默认值下运行.)所讨论的路径可以是任何存在的路径(如果不存在,您可以将其创建为空目录),并且它应该是您的路径,而不是与其他应用程序共享。这可能是暂时的。

同样,使用 -no-remote -profile c:\some\path 调用 firefox.exe(以管理员身份)将在调用时创建一个新的(提升的)实例即使具有标准配置文件的实例已经在运行,但后续调用必须使用不同的配置文件路径,否则 Firefox(与 Chrome 不同)会交互地提示您实际上是在尝试从同一配置文件目录运行多个实例。

从上面可以看出,生成一个具有高度的新浏览器窗口是可能的,但很麻烦且容易出错,这就引出了一个问题:到底是什么 您是否需要在新浏览器中以海拔高度执行? 整个浏览器是否真的需要以海拔高度运行,或者您可以将“需要海拔”功能委托(delegate)给辅助进程(您可以轻松地生成“作为管理员”并通过环回或通过命名管道进行对话,无论您的主机浏览器是什么?)

关于javascript - 如何从代码中以管理员身份运行 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231265/

相关文章:

c++ - c++-const成员func,只能使用ref限定符在左值实例上调用

visual-c++ - 什么时候需要使用FreeHGlobal()?

javascript - 如何使用 Angular 或 JavaScript 连接两个具有相同 id 的数组

javascript - Vue.js : Call a Method from another Component

html - 在 Firefox 中带有基本 href 的 SVG 掩码

html - 在 Firefox 中悬停时不透明度为 "jumping"的图像

javascript - 在 Google Chrome 中使用全屏 API 时,我无法在输入元素中使用字母数字键盘

javascript - Webpack - 文件加载器不起作用(无法在我的 html 中动态加载 svg 文件)

angularjs - Angular ui-可排序 : Stop click event on drop in Firefox

visual-c++ - Visual Studio 中嵌套模板的一致性模式和多重继承