2009-02-02 115 views
2

如何检测我的应用程序是针对“所有用户”还是仅针对一位用户安装的。知道是否为“所有用户”安装了应用程序

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

有没有更好的方法?

回答

4

要扩大萨钦野牛的回答是:

的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\

1

我希望这可能对你有用。

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

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

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

相关问题