知道是否为“所有用户”安装了应用程序

时间:2009-02-02 09:58:09

标签: c# .net

如何检测我的应用程序是为“所有用户”安装还是仅为一个用户安装。

今天我检查安装程序放入Environment.SpecialFolder.CommonApplicationDataEnvironment.SpecialFolder.ApplicationData的文件。

有更好的方法吗?

2 个答案:

答案 0 :(得分:4)

扩展Sachin Gaur的答案:

S-1-5-18 (*) 文件夹适用于本地系统用户 - 在为所有用户安装时使用。 当前用户的Intallation将产品密钥放在以该用户的安全标识符命名的文件夹中(S-something-else)。

要获取当前用户的SID,请使用System.Security.Principal.WindowsIdentity.GetCurrent()获取WindowsIdentity。然后,使用User属性获取SecurityIdentifier。然后使用ToString()获取字符串值。

有关用于访问注册表的GetValue方法,请参阅MSDN

(*) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\

答案 1 :(得分:1)

我希望这对你有用。

您可以通过读取注册表值来了解是否为所有用户安装了应用程序。为此,您必须知道应用程序的产品代码:

  

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品\

要阅读C#中的注册表项,可以在Microsoft.Win32中使用注册表类的 GetValue()方法。