gpt4 book ai didi

c# - msi 安装程序完成后的应用程序进程以 SYSTEM 用户名启动,有时无法创建 com 对象

转载 作者:可可西里 更新时间:2023-11-01 10:26:55 29 4
gpt4 key购买 nike

我有一个安装 C# 应用程序的 visual studio 安装程序项目,我有一个自定义操作和代码来在安装完成后运行该过程。

假设 Windows 机器上的登录用户是“john”。现在,当 john 运行 msi 安装程序时,我检查了任务管理器中的进程,它显示 msiexec.exe 是安装程序的进程名称,它以用户“john”身份运行

安装程序现在完成并运行安装应用程序的进程 myapp.exe,当我在 Windows 的任务管理器中检查此进程时,它显示 myapp.exe 正在以 SYSTEM 身份运行(我知道那是什么帐户以及为什么它不以 SYSTEM 身份运行约翰)

问题当 myapp.exe 以 SYSTEM 用户身份运行时,它无法创建已经以用户 john 身份运行的组件(在我的例子中是 iTunes)的 com 组件实例。如果该组件未运行,则创建 iTunes 实例成功,否则创建失败。

问题那么是否可以确保安装程序何时以 john 身份运行,完成后以 john 而不是 SYSTEM 用户身份启动进程 myapp.exe ?请注意,我在安装过程中不会要求用户输入密码。

安装程序完成时我运行的代码

    // Event handler for 'Committed' event.
private void MyInstaller_Committed(object sender, InstallEventArgs e)
{
try
{
Directory.SetCurrentDirectory(Path.GetDirectoryName
(Assembly.GetExecutingAssembly().Location));
Process.Start(Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + "\\MyApp.exe");
}
catch
{
// Do nothing...
}
}

最佳答案

这很可能会发生,因为您正在延迟运行自定义操作。即它默认在 SYSTEM 用户帐户下运行。

解决方案是确保立即启动它,例如,您可以使用安装最后一个对话框中“完成”按钮上的已发布事件来启动它。我不知道如何在 VS 安装项目中添加已发布的事件,或者如果可能的话,但您可以轻松地在使用专门的 setup authoring tools 构建的包中添加一个。 .

关于c# - msi 安装程序完成后的应用程序进程以 SYSTEM 用户名启动,有时无法创建 com 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691676/

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