如何检测我的应用程序是为“所有用户”安装还是仅为一个用户安装。
今天我检查安装程序放入Environment.SpecialFolder.CommonApplicationData
或Environment.SpecialFolder.ApplicationData
的文件。
有更好的方法吗?
答案 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()方法。