【问题标题】:Programmatically add file association without admin rights in C#在 C# 中以编程方式添加没有管理员权限的文件关联
【发布时间】:2012-03-14 15:44:27
【问题描述】:

其他人也问过类似的问题,但我想澄清一下。我想在安装时构建我的应用程序而不需要管理权限。对于文件关联,我知道我需要在注册表中写入,但到目前为止,我在 stackoverflow 文章中找到了两个不同的位置:

HKEY_CURRENT_USER\Software\Classes

另一个在

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

那么哪一个是正确的呢?

【问题讨论】:

标签: c# visual-studio-2010 registry file-association


【解决方案1】:

您应该使用前者 (HKCU\Software\Classes),因为这是 Windows 用来打开文件的方式。

我不确定第二个是做什么用的;我相信它仅用于填充“打开方式”对话框的推荐部分。

【讨论】:

  • 我试着在这个位置写,我也做不到。请记住,我们的 IT 给予我的权限比大多数人多得多。
【解决方案2】:

很遗憾,这是不可能的。您需要管理员权限才能执行此操作,这是没有办法的。

但是,您可以让用户在没有管理员权限的情况下安装应用程序,并让他有机会稍后关联文件扩展名,您可以在此请求提升权限。

除此之外,没有办法实现你想要的。

【讨论】:

  • @SLaks 过去曾尝试在安装过程中注册扩展,并且总是需要提升权限,这可能取决于您的 UAC 设置方式?应该补充的是,这是在用户权限非常有限的公司环境中
  • 不,同一个用户很可能无法注册扩展程序,即使以编程方式进行,但至少他可以安装和使用该应用程序,注册扩展程序是一种更简单、更简单的方法他使用该应用程序。稍后,具有适当权限的用户可以通过使用提升的权限执行此代码来为他注册扩展。
  • @ntziolis:Windows 有两组不同的扩展关联; HKLM 一名,HKCU 一名。 HKCU 中的那个总是可写的,除非你有非常错误的 ACL。但是,它很少使用。
  • @SLaks 很可能不是整个 HCKU,可能只是文件关联部分,实际上这很合理,很多恶意软件在不久前就以这种方式造成了相当大的破坏
  • 确认一下,在我去过的大多数地方,IT 都是偏执狂。我们在银行部署我们的软件,他们根本不允许做任何事情。
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2013-11-05
  • 2021-06-03
  • 2020-02-07
相关资源
最近更新 更多