1

プログラムが msiexec.exe を使用してインストールされると、タスク スケジューラにタスクが追加され、実行されているかどうかが確認され、実行されていない場合は起動されます (これはキオスク シナリオです)。

        WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
        string user = windowsIdentity.Name

SYSTEM残念ながら、実行時に UserEnvironment にアクセスできないタスクが追加されています。msiexec.exe を実行しているユーザーではなく、コマンドを発行したユーザーを取得する方法を知っている人はいますか?

4

1 に答える 1

1

インストール プロセス中にチェックする必要がある場合は、VBScript でカスタム アクションを使用できます。たとえば、WMI を使用してログに記録されたユーザーをチェックします。

Option Explicit

Dim objReg, objWMI, colSessions

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

Set colSessions = objWMI.ExecQuery("Select * from Win32_LogonSession Where LogonType = 2 Or LogonType = 10") 
If colSessions.Count <> 0 Then 
    'Some users are logged into Windows.
    'For example set property 
    'Session.Property("SOMEONELOGGED") = "1"
End If 
于 2012-10-31T14:01:21.300 に答える