在Windows上哪里可以安装没有安装程序的小型程序?


35

在Windows平台上,大多数大型应用程序都带有自己的安装程序,该安装程序在C:\Program Files,下和其他位置设置文件夹,并可能添加一些注册表项等。

但是仍然有很多工具仅由一个.exe或一个README和一个.dll或两个组成。

我应该如何安装此类工具?直接在C:\Program Files?在一个子文件夹下C:\Program Files?在某处C:\Users\Me?某个地方完全不同?

也许对于.exe具有其他文件的工具,仅使用的工具的方法不同,或者也许仅对具有.dlls的工具进行区别对待...

是否有任何接受的标准方法?“最佳实践”?如果答案取决于Windows版本,则说明我使用的是Windows 7。

特别是,显而易见的答案可能会给人们留下深刻的印象:

我曾尝试在下手动创建新的子文件夹C:\Program Files。实际上,我认为我以前曾经这样做过,但是Windows弹出一个对话框Destination Folder Access Denied。这使我三思而后行,而不仅仅是盲目地单击“ 继续”

目标文件夹访问被拒绝

假设多年来,我的思想比我更重要,我想问一下社区是否已经接受某种“最佳实践”。


3
您从什么角度问这个问题?具体来说,这是您正在编写的应用程序,还是试图安装其他人的应用程序?
哈里·约翰斯顿

2
@HarryJohnston:它用于安装其他人的应用程序。前几天,我下载了一些旨在查看或编辑非常大的文件的程序,而其中有几个没有安装程序。但是,同样适用于Windows上的大多数命令行工具,我有几个。
hippietrail

@UltraDEVV:我想知道是否其他人已经考虑了这个问题并决定了“最佳实践”。在决定是否要在C:\Program Files其他地方安装之前,我想知道那里有什么解决方案,并且我提供了有关C:\Program Files成为明显解决方案的潜在障碍的信息。
hippietrail 2014年


@UltraDEVV:我已经读过你的文章,并且已经投票赞成。很高兴看到这个卧铺问题在三年半的休息后重生!
hippietrail

Answers:


25

使用 C:\Tools

要么 C:\Users\<user>\Tools
 

我正在使用许多没有安装程序的小型程序,因此建议以下操作:

  • 全部保存到 C:\Tools
  • 如果程序由单个文件组成,请将其直接放在下面 C:\Tools
  • 如果程序包含多个文件,请将其放在 C:\Tools\ProgramName
  • SysInternals工具有一个特殊的类别,C:\Tools\_SysInternals因为它们很多

我只是C:\Tools在迁移时从一台机器移到另一台机器,就像一个魅力一样。

实际样本(缩短清单):

C:\ Tools \ autoexec-elevated.bat
C:\ Tools \ cleanup.bat
C:\ Tools \ BabelMap.exe
C:\ Tools \ netmon.exe
C:\ Tools \ notifu.exe
C:\ Tools \ putty.exe
C:\ Tools \ UDPixel.exe
C:\ Tools \ battery.vbs

C:\ Tools \ 3dclip-1.5.1 \
C:\ Tools \ alternatestreamview \
C:\ Tools \ blender-2.71-windows64 \
C:\ Tools \ Notepad ++ \
C:\ Tools \ QueryExpress \
C:\ Tools \ winscp555 \
C:\ Tools \ Xinorbis \

C:\ Tools \ _Sysinternals \ accesschk \
C:\ Tools \ _Sysinternals \ Autoruns \
C:\ Tools \ _Sysinternals \ depends22_x64 \
C:\ Tools \ _Sysinternals \ depends22_x86 \
C:\ Tools \ _Sysinternals \ LogonSessions \

我希望这能给我一个想法。

编辑:扩展信息

我想在您的问题中的install我应该如何安装这样的工具?您实际上是指手动设置,类似于复制文件。

经验法则:将手动创建的文件夹用于手动维护的文件。让系统文件夹供您不直接控制的(安装)进程使用。 您将立即认识到哪些内容是“您的”(您可以自由复制)以及哪些应用程序由安装程序管理,从而使您受益匪浅。

因此,在手动安装(通过复制)时,请远离

  • C:\Program Files -在这里找到的程序不能简单地迁移,必须重新安装(为迁移提供了很好的提示)
  • C:\Program Files (x86) -如上所述,但在64位系统上,此处是32位程序(可以提示您确定特定应用是32位还是64位)
  • C:\ProgramData-在此处找到的应用程序存储表明,这些程序以自己的方式维护其某些数据。但是您问过要把程序放在数据下吗?这不是一个好主意。
  • C:\Users\Steven\AppData-同样,将程序置于Data下不是一个好主意。如果您询问数据,那么可以写一些有关此路径的有趣的东西。但是对于程序,只是“不”。:)

可能的路径

  • C:\Users\Steven- 如果这是一台共享计算机,并且希望保持整洁,则可以作为替代根目录,因此决定不创建任何全局目录。您可以考虑C:\Users\Steven\Tools使用自己的程序,或者即使C:\Users\Steven\Desktop\Tools您想使用Windows上许多地方都可以通过快捷方式访问的舒适的Desktop文件夹访问。但是最好是前者,您仍然可以将此文件夹的快捷方式放在桌面上,或在需要时使用。

编辑:其他有用的提示:

如果要在Windows 10的“ 开始”菜单中识别某些小程序(用于增量搜索其名称或使用Ctrl+ Shift+ 立即提升权限Enter),请在其中添加其快捷方式,然后启动它们一次。(然后您可以将其删除。)


这听起来不错,但是最佳实践文档或类似的东西是否支持它?如果是这样,它将真正改善答案。

@DoritoStyle –您可能需要检查公司中的最新最佳做法文档。如果您了解更多一般性的最佳做法文档,请告诉我,我们将对其进行检查。
miroxlav '17

1
我使用“ C:\ Utility”,但使用相同的方法!
乔恩·施耐德

除了“工具”之外,还有其他功能是否也能正常工作:如果我使用诸如C:\OtherC:\Users\<user>\Other,是否会被认为与“工具”一样“合法”?
Henrik

@Henrik-由于没有标准,请使用适合您的感觉并且足够清晰的方法。例如,我尝试了C:\ Progs(名称唤起了没有安装程序的小程序),但是到最后,它感觉并不直观,因此我将名称恢复为Tools。
miroxlav

11

据我所知,还没有通用的方法。

将您的应用程序放入C:\Program Files是一种相当标准的方法。您将获得访问保护:普通(和非普通)用户无法写入C:\Program Files。因此,您不会意外删除,覆盖此类文件;而且可以更好地保护他们免受病毒侵害。

因此,当您尝试在中创建文件夹时会收到警告(海拔请求)C:\Program Files

因此,这C:\Program Files是可执行文件最安全的位置。

但是,它不适用于将配置存储在附近的(便携式)应用程序,.exe因为它们将无法保存配置更改。


C:\ProgramData用于存储用户之间共享的应用程序数据。默认情况下,所有用户都可以在此处创建文件和文件夹,但是只有创建它们的用户才能修改文件。

此文件夹可以轻松用于共享应用程序/工具。同时,我从未在此文件夹中看到任何应用。


如果您将应用程序放置在用户个人资料中,C:\Users\<username>则系统的其他用户将无权访问它。您拥有个人资料的所有权限,因此不会收到任何安全警告。这就是Chrome安装到用户个人资料中的原因:它可以轻松更新自身,而无需提示提升权限。

在每用户模式下,Windows Installer程序包, .msi文件安装到C:Users\<username>\AppData\Microsoft\Installer\<ProductId>。因此,将非共享应用程序保留在用户的个人资料中是很标准的。

我有 utils我的用户的配置文件与应用程序只对我来说是有用的文件夹中。此文件夹已添加到我的用户PATH环境变量中,以便于访问。

对于共享应用程序,我使用C:\tools或类似目录,可能在另一个驱动器上。它已添加到全局PATH变量。


7

我同意已经给出的答案。但是对于非常小的程序(utils),我倾向于将它们放在bin文件夹中(在我的情况下为E:\ bin)。这些程序通常是单个exe文件或我自己的python脚本。我将此文件夹添加到PATH变量中,以便可以从命令行使用这些程序(我经常使用它们)。


我确实也考虑过C:\Program Files\bin为这些类型的工具和实用程序创建通用名称。感谢您的反馈。
hippietrail 2013年

5

据我所知,没有最佳实践。实际上,完全取决于您自己来决定如何处理它。

我倾向于遵循与带有安装程序的任何应用程序相同的标准。如果它是可执行文件或库,\Program Files\则将其放置在64Bit和Program Files (x86)\32Bit中。

我倾向于存储在我的数据文件中 Users文件夹中,因为它们通常是特定于用户的。

还有一些应用程序,例如Google Chrome和Click-Once应用程序,可以部署到 Users\AppData\,但是这些通常不适用于多个配置文件。

我更喜欢第一种方法,因为如果需要登录另一个配置文件或以管理员身份,我仍然可以访问应用程序。

关于许可警告。正是这样,一个警告。只是警告您由于错误的原因而使用该文件夹,但这并不妨碍您使用它。


4
我建议不要在Program Files文件夹中手动安装应用程序,因为没有安装程序的应用程序通常是较旧的或来自其他操作系统的端口,因此它们并不总是能很好地适应路径中的空间。YMMV。
哈里·约翰斯顿

3
我建议也不要手动安装任何东西%ProgramFiles%,但是出于另一个原因:没有安装程序的应用程序通常是可移植的,并且您那里没有写权限
kinokijuf 2014年

4

如果您想标准化这些应用程序,那么我建议您使用Chocolatey软件包标准。这有很多不同的原因,这是件好事。主要是因为已经为您打包了许多软件,并且只需几个命令就可以从任何地方安装。

为无法自由分发的应用程序制作自己的软件包也很容易。您可能确实有权在自己的网络上分发您拥有的任何内容;因此对于这些应用程序,您可以设置本地存储库。如果您要管理多台计算机或互联网带宽有限,那么即使是免费的东西也可能会有所帮助。


2

如果您使用cygwin的默认安装选项,它将所有文件放在c:\ cygwin。我会采用相同的方法。我个人有ac:\ apps文件夹。过去,我使用过c:\ utils和c:\ cli(命令行的缩写)。这实际上取决于您要如何组织文件。我建议将单个实用程序放在一个catchall文件夹中。对于一整套实用程序(例如cygwin,sysinternals,rktools),我建议使用它自己的子文件夹。例如,您可以将所有sysinternals放入c:\ apps \ sysinternals中。如果安装了cygwin,它将使用您喜欢的大多数(如果不是全部)Unix命令。

请记住要更改环境变量(“开始”>“控制面板”>“系统”>“高级”>“环境变量”),并将所有新的应用程序路径附加到PATH系统变量中。这使您可以从命令提示符或使用Windows + R(运行命令)按需运行它们。


5
我认为Cygwin开发人员不在乎Windows标准,复制他们的不良习惯是错误的(在根目录中创建文件夹)。我觉得这就像\Program Files在linux中创建目录。
卡米尔2014年

我不知道为什么那会是一件坏事。Cygwin适用于Unix环境。当Cygwin适用于想要使用Unix工具的人时,为什么他们会迎合Windows标准?
2014年

完全是@Sun!OP要求Windows最佳做法。

1

C:\Users\Me\toolName(aka%homepath%\ toolName)是假设您想要为Me用户提供工具的正确位置,因为其中一些工具会写入(临时)文件,并且需要用户权限才能写入Program files文件夹。另一个优点是您不会忘记备份它,因为它已经存在于用户空间中。


2
我会使用%homepath%' rather than c:\ users \ me`。即使默认位置已移动,这也指向正确的位置,因此更便于携带。写作/临时部分为+1。
汉尼斯(Hennes)2014年

我被纠正和编辑的原因是它被添加而不是被替换的原因是要用与问题相同的术语来回答,
谢谢海恩斯(

0

对此没有任何规则,可以将其安装在任何位置,但是将它们安装到非用户文件夹中的OSP(操作系统分区)通常是一个好主意,因为您将获得相同的访问保护您在其他应用程序上有吗?这使得更难以意外删除或由第三方修改它们(例如:病毒)。

就我个人而言,我通常将程序放在“ C:\ Program Files(x86)”中,因为我遇到的大多数此类程序都是32位的,但是如果它是64位程序,那么我会将其放在C:\ Program Files中。 。如果它是与系统相关的程序(例如:Imagex.exe),那么对于32位程序,我将其放置在“ C:\ Windows \ system32”中,对于64位程序,则将其放置在“ C:\ Windows \ system32”中,以便从运行提升的命令提示符时返回命令行,因为默认情况下您是从C:\ Windows \ system32启动的;这意味着您可以键入“ name.exe”而不是C:\ location \ name.exe来运行程序。

有些人更喜欢通过创建新目录来将其可移植程序(不需要安装或在其文件夹外执行无监督的更改)和非基于安装程序的程序(非便携式,但不需要使用安装程序)与常规程序分开。在他们的OSP上(例如:C:\ Portable程序文件(x86)或C:\ Dumpable程序文件(x86))。我建议使用2中的第2个,因为它的准确性更高,即使听起来不像漂亮。

总之,没有规则,但是,如果将它们安装到OSP(位于非用户文件夹中),则可以在某些情况下帮助保护程序免受意外的卸载/修改(包括恶意修改)的侵害。组织可能是有益的(例如:前面提到的系统CLI程序的system32文件夹)。


1
我认为您从根本上误解了这个问题。原始问题的第一部分是“最佳实践”,而不是“规则是什么”。
Steven Penny

@StevenPenny完全没有,只是一个不同的措词。问题的关键是原因做X或者不做X.
罗宾汉

我只是想出了我喜欢的东西:Etc或者,Etcetera如果您更喜欢真正的三色堇拉丁。在第二位,我也考虑了Misc。但是Etc为我达成了交易。:)
Henrik

0

我想创建一个快捷方式C:\ToolsSend To菜单中的窗户是最好的选择,因为它始终是从任何地方访问。这样,您可以通过右键单击小程序并从Windows的任何位置的“发送到”菜单中选择“ 工具 ”来快速“安装”您的小程序。

我从HowToGeek获得了有关如何添加到“发送到”菜单教程,
我粘贴了摘要:

要进入SendTo文件夹,您需要打开一个Explorer窗口,然后将以下内容粘贴到地址栏中。

%APPDATA%\ Microsoft \ Windows \ SendTo

然后,将要复制程序的文件夹的快捷方式粘贴到该文件夹​​中。

然后,每次下载新的便携式应用程序时,只需将其提取并发送到该位置即可。
唯一的问题是创建快捷方式,我认为值得手动进行。
问候。


发送至”文件夹并不真正适合用作安装程序的位置。它具有特定的目的,即允许发送文件/文档以供程序进一步处理(例如,在记事本中打开文件)。此外,放置在“发送到”文件夹中的所有文件将显示在Windows上下文菜单上,包括支持的.DLL。在大多数情况下,这显然是不可取的。
我说恢复莫妮卡2014年

1
否。看起来您和所有拒绝投票的人都没有理解我的意思。我的意思是C:\Tools\ Send To文件夹中添加一个快捷方式,例如,然后从任何地方访问它,这样您就无需手动应对每个程序的麻烦。我的回答可能会加快应对其他事物的速度。对我来说很棒。
UltraDEVV

我进行了可能的编辑,以在您的答案中包含此附加说明。答案是根据答案进行向上/向下投票,不一定基于评论中包含的详细信息,因此希望这会有所帮助。
我说恢复莫妮卡2014年

否,从Windows Vista开始,该%APPDATA%变量植根于该%USERPROFILE%\AppData\Roaming文件夹中,因此对于Windows 7,上述路径正确。但是,在Windows XP中,您需要按照指示添加“漫游”文件夹。
我说恢复莫妮卡

如果您认为您的问题不清楚,则应予以澄清。您为什么要提交两个答案?
Ramhound 2014年

0

Windows中的默认系统Path环境变量类似于(取决于安装的Windows版本):

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

在这些选项中,%SystemRoot%(通常为C:/)似乎是您读/写的最佳选择,以后将很容易引用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.