gpt4 book ai didi

c# - Visual Studio 安装项目 : run CustomActions/process as current user not system account

转载 作者:太空狗 更新时间:2023-10-29 23:00:34 25 4
gpt4 key购买 nike

我在 visual studio 2010 中为 c# outlook 加载项 (Office 2010/2013) 和其他独立工具使用安装项目。在安装过程中,我杀死了所有 outlook 实例,之后我想重新启动 outlook 实例。

在我的插件项目中,我添加了一个安装程序类并在我执行的位置添加了一个 InstallEventHandler(AfterInstallEventHandler)

Process.Start("Outlook");

虽然相同的命令只是在其他编译类中打开 Outlook,但在安装程序的上下文中,outlook 在配置文件创建助手中打开。

我还尝试在提交后将所述工作编译的 exe 作为用户定义的操作运行,但出现同样的问题。

任何解决方案或解释将不胜感激。

最佳答案

解决方案:

安装在 SYSTEM 帐户中运行。因此,创建的进程也在所述帐户中运行,而不是作为当前登录的用户。

我创建了一个附加项目 (InstallHelper),其中包括

Process.Start("Outlook");

我在我的设置项目中将 InstallHelper 作为 CustomAction 添加为 Commit,并在 CustomAction 的属性中将 InstallerClass 更改为 False。然后我将 WiRunSql.vbs 复制到项目文件夹,并在安装项目中添加了一个 PostBuildEvent:

@echo off
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOutputPath)" "UPDATE CustomAction SET Type=1554 WHERE Type=3602"

3602:

  • 0x800 (msidbCustomActionTypeNoImpersonate)
  • 0x400 (msidbCustomActionTypeInScript)
  • 0x200 (msidbCustomActionTypeCommit)
  • 0x12(自定义操作类型 18:exe)

1554:

  • 0x400 (msidbCustomActionTypeInScript)
  • 0x200 (msidbCustomActionTypeCommit)
  • 0x12(自定义操作类型 18:exe)

参见: msdn: Custom Action In-Script Execution Options

Type-change 删除了 msidbCustomActionTypeNoImpersonate (0x00000800) 位,因此 InstallHelper 和创建的进程以登录用户身份运行,而不是以 SYSTEM 身份运行。

或者,可以通过在 orca 中打开 msi 来进行这些更改(必须在每次构建后重复,所以我更喜欢脚本更改)。

关于c# - Visual Studio 安装项目 : run CustomActions/process as current user not system account,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com