【发布时间】:2012-11-21 09:59:15
【问题描述】:
我有一个安装 C# 应用程序的 Visual Studio 安装程序项目,我有一个自定义操作和代码来在安装完成后运行该过程。
假设Windows机器上的登录用户是“john”。现在当 john 运行 msi 安装程序时,我检查了任务管理器中的进程,它显示 msiexec.exe 是安装程序的进程名称,它以用户“john”的身份运行
安装程序完成并运行安装应用程序的进程 myapp.exe 现在,当我在 Windows 的任务管理器中检查此进程时,它显示 myapp.exe 正在以 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...
}
}
【问题讨论】:
-
您的问题解决了吗?如果是这样,愿意发布解决方案吗?
-
我做了,是的,但不记得让我检查我的代码,然后会给你我的解决方案
标签: c# windows visual-studio-2010 windows-installer setup-project