如何检测我的应用程序是针对“所有用户”还是仅针对一位用户安装的。知道是否为“所有用户”安装了应用程序
今天,我检查由我的安装程序放入Environment.SpecialFolder.CommonApplicationData
或Environment.SpecialFolder.ApplicationData
的文件。
有没有更好的方法?
如何检测我的应用程序是针对“所有用户”还是仅针对一位用户安装的。知道是否为“所有用户”安装了应用程序
今天,我检查由我的安装程序放入Environment.SpecialFolder.CommonApplicationData
或Environment.SpecialFolder.ApplicationData
的文件。
有没有更好的方法?
要扩大萨钦野牛的回答是:
的S-1-5-18 (*)文件夹是本地系统的用户 - 这是在安装了所有用户时使用。 当前用户的Intallation将在以该用户的安全标识符(S-something-else)命名的文件夹中具有产品密钥。
要获取当前用户的SID,请使用System.Security.Principal.WindowsIdentity.GetCurrent()
以获得WindowsIdentity
。然后,使用User
属性获取SecurityIdentifier
。然后使用ToString()
获取字符串值。
请参阅GetValue方法用于访问注册表。
(*)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\
我希望这可能对你有用。
通过读取注册表值,您可以知道是否为所有用户安装了应用程序。对于这一点,你必须知道应用程序的产品代码:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品\
要阅读C#中的注册表项,可以使用GetValue()方法注册表类中的Microsoft.Win32。