Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从自定义操作运行时,WindowsIdentity.GetCurrent()返回系统_.net_Visual Studio 2008_Windows Installer_Windows Authentication - Fatal编程技术网

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

.net 从自定义操作运行时,WindowsIdentity.GetCurrent()返回系统,.net,visual-studio-2008,windows-installer,windows-authentication,.net,Visual Studio 2008,Windows Installer,Windows Authentication,我有一个安装项目(在Windows7上运行),它在提交时启动一个自定义操作,启动刚刚安装的应用程序。在这个应用程序启动期间,我有一个方法检查当前用户名以执行一些身份验证。从该自定义操作启动时,我得到的是“N权限\系统”,而不是“域\用户” 更新: 这个来自公认答案的链接解决了我的问题: 您可能应该阅读MSI属性的值: string username = Session.Property("USERNAME"); 上述将在即时执行模式下工作;但是,在延迟模式下,您必须使用CustomAction

我有一个安装项目(在Windows7上运行),它在提交时启动一个自定义操作,启动刚刚安装的应用程序。在这个应用程序启动期间,我有一个方法检查当前用户名以执行一些身份验证。从该自定义操作启动时,我得到的是“N权限\系统”,而不是“域\用户”

更新: 这个来自公认答案的链接解决了我的问题:


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

string username = Session.Property("USERNAME");
上述将在即时执行模式下工作;但是,在延迟模式下,您必须使用
CustomActionData
属性将用户名显式地传递给您的自定义操作。详情请参阅:

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

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


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

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

调用“WindowsIdentity”的代码位于正在安装的应用程序中,它不知道msi@jwarzech:那么你的问题似乎是另一个问题?“安装后如何启动已安装的应用程序?”您使用哪个工具生成安装程序?我有一个VS2008部署项目,该项目安装应用程序,然后调用运行“Process.Start(myapplication)”的CustomAction。应用程序要做的第一件事是检查WindowsIdentity并在授权数据库表中查找用户。