c# - 知道是否为 "All users"安装了应用程序

标签 c# .net

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

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

有没有更好的办法?

最佳答案

扩展 Sachin Gaur 的回答:

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

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

参见 MSDN对于用于访问注册表的 GetValue 方法。

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

关于c# - 知道是否为 "All users"安装了应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502717/

相关文章:

c# - 使用 Process.Start 运行程序时,找不到它的资源文件

c# - 通过 EWS 发送电子邮件时使用自定义显示名称

c# - 此平台不支持 System.Data.SqlClient

c# - 根据受欢迎程度选择项目 : Avoiding a glorified sort

c# - 允许使用 LINQ 查询中的 ToDictionary() 重复键

.net - 在 Visual Studio 的 Intellisense 中隐藏接口(interface)方法

.net - 你能拦截WCF消息对象的创建吗? (服务器端)

c# - 比 xsd 生成的类更快的 XML 文件读取

c# - 仅当线程处于某个方法时才锁定多个方法

c# - 原始流有数据,Deflate 返回零字节