首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从代码中以管理员身份运行Chrome

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

Stack Overflow用户
提问于 2012-11-05 19:33:03
回答 1查看 2K关注 0票数 2

我需要从插件动态链接库代码(VC++)管理员运行Chrome。

但如果chrome窗口处于活动状态,则新创建的窗口不会获得管理员权限。

我从JavaScript调用插件动态链接库代码。在创建新窗口后,我关闭了以前的窗口,但同样的情况也发生了。

我需要帮助,因为我的插件需要管理privileges.same在火狐的情况下。

(现在我以管理员身份使用shellExecute创建一个新窗口)。

代码片段:

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

代码语言:javascript
复制
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;  
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-11 13:48:34

你不能用你正在尝试的方式轻松地解决这个问题。大多数浏览器可执行文件将检查现有实例,并在找到时重用该实例。有一些特定于浏览器的方法可以通过命令行选项调整或跳过检查,以便允许您生成第二个进程,但这些方法是特定于浏览器的,甚至其中一些浏览器也比其他浏览器更自负。

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

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

从上面可以看出,生成一个带有elevation的新浏览器窗口是可能的,但很麻烦且容易出错,这就引出了这样一个问题:在那个新浏览器中执行elevation时到底需要什么?整个浏览器是否真的需要使用elevation运行,或者您是否可以将“需要elevation”功能委托给一个助手进程(这样您就可以轻松地生成“以管理员身份”并通过环回或通过命名管道与之通信,而不管您的主机浏览器是什么?)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13231265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档