从自定义操作运行时,WindowsIdentity.GetCurrent()返回SYSTEM

时间:2010-05-03 16:04:30

标签: .net visual-studio-2008 windows-installer windows-authentication

我有一个安装项目(在Windows 7上运行),它在commit时启动自定义操作,启动刚安装的应用程序。在启动此应用程序期间,我有一个检查当前用户名称以执行某些身份验证的方法。从此自定义操作启动后,我将获得“NTAUTHORITY \ SYSTEM”而不是“DOMAIN \ USER”

更新 接受的答案中的这个链接解决了我的问题:

How can I customize an MSI in the Visual Studio setup/deployment project?

2 个答案:

答案 0 :(得分:3)

您可能应该阅读USERNAME MSI属性的值:

string username = Session.Property("USERNAME");

以上将在立即执行模式下工作;但是,在延迟模式下,您将明确地使用CustomActionData属性将用户名传递给自定义操作。详情请见:

  

Tip: MSI Properties and Deferred Execution

更新:如果您想在安装完成后启动已安装的应用程序,则可能更喜欢本文中介绍的方法:

  

Launching Your Application After Install using Visual Studio 2005

或使用Aaron Stebner的脚本修改您的MSI:

  

<强> How can I customize an MSI in the Visual Studio setup/deployment project?

答案 1 :(得分:0)

以下代码是我在Installer类中用作自定义操作的代码。这将返回当前登录的用户,而不是“NTAUTHORITY \ SYSTEM”

    IdentityReference identity = new System.Security.Principal.NTAccount(Environment.GetEnvironmentVariable("USERDOMAIN") + "\\" + Environment.GetEnvironmentVariable("USERNAME"))