在Windows上安装PostgreSQL 9:“无法在TEMP环境路径中写入。”

时间:2011-03-07 19:11:18

标签: windows postgresql installation

我试图在我的WinXP机器上安装PostgreSQL 9(postgresql-9.0.3-1-windows.exe)并在开始时收到以下错误:

Unable to write inside TEMP environment variable path.

一些谷歌搜索产生了一些建议Windows Scripting Host might be disabled。我已经检查过,WSH肯定是启用的,所以它必须是别的东西。问题是什么?

我可以在%TEMP%中看到名为 prerun_checks.vbs 的文件,当我尝试手动运行时,我会得到以下内容:

enter image description here

这看起来像权限错误。但是,我是一个管理员,我已经完全控制了temp文件夹,但它仍然没有用。

任何帮助表示感谢。

23 个答案:

答案 0 :(得分:32)

在我的情况下,解决方案与NotePad++是打开.vbs文件的默认应用程序有关。如果你有相同的情况,这里有一个精心设计的解决方案:

http://igordcard.blogspot.co.il/2012/03/unable-to-write-inside-temp-environment.html

简而言之,在注册表中,您需要转到HKEY_CLASSES_ROOT\.vbs,并将(Default)条目设置回字符串VBSFile

答案 1 :(得分:7)

当我完成上述问题时,我们的IT人员出现并立即知道问题是什么:它是迈克菲。它可以防止任何在TEMP文件夹中运行,包括Windows Scripting Host脚本。在安装期间禁用McAfee可以解决我的问题。

因此,如果您发现此问题,请尝试停用您的防病毒软件。

答案 2 :(得分:5)

以下页面的答案帮助了我。 http://forums.enterprisedb.com/posts/list/3040.page

  1. 游程>注册并使用导出备份注册表
  2. HKEY_LOCAL_MACHINE-> SOFTWARE-> Classes-> CLSID-> B54F3741-5B07-11cf-A4B0-00AA004A55E8} - > InprocServer32的
  3. 使用新值修改注册表项为C:\ Windows \ System32 \ vbscript.dll
  4. 事实上,我发现HKEY_LOCAL_MACHINE-> SOFTWARE-> Classes-> CLSID-> B54F3741-5B07-11cf-A4B0-00AA004A55E8}有3个条目,并设置第一个如上,它的工作原理

答案 3 :(得分:3)

如果其他人正在搜索有关此内容的信息并且此处没有任何运气,您可能需要查看:

http://wiki.postgresql.org/wiki/Troubleshooting_Installation

有关邮件列表的后续内容,请阅读:

http://wiki.postgresql.org/wiki/Guide_to_reporting_problems

答案 4 :(得分:2)

以上所有内容对我都不起作用。我收到的错误如下:

脚本输出:  CScript错误:在此计算机上禁用Windows脚本宿主访问。有关详细信息,请与您的管理员联系。

所以经过几次谷歌搜索我找到了解决方案: 导航到以下密钥:

  

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows Script Host \ Settings

在右侧面板中,您将看到已启用。如果您看到条目0,则表示Windows计算机上禁用了Windows脚本宿主访问。

双击它并为其提供值数据1以启用它。

值为1将启用Windows脚本宿主 值为0将禁用Windows脚本宿主。

for windows 10导航到

  

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows Script Host \ Settings

答案 5 :(得分:2)

嗯,在我的情况下没有任何效果,并且禁用McAffee需要与我公司的安全团队签订一张特殊票据才能实际执行...所以我使用二进制文件安装,遵循本指南Helpful Guide

总之,从here下载二进制文件,解压缩它,进入pgsql文件夹,在那里创建logdata目录,然后打开命令提示,导航到pgsql\bin文件夹所在的位置,然后运行initdb -U postgres -A password -E utf8 -W -D POSTGRESQL_ROOT\data

您可以通过运行

来启动和停止服务器
"POSTGRESQL_ROOT/bin/pg_ctl" -D "POSTGRESQL_ROOT/data" -l "POSTGRESQL_ROOT/log/pgsql.log" start

"POSTGRESQL_ROOT/bin/pg_ctl" -D "POSTGRESQL_ROOT/data" -l "POSTGRESQL_ROOT/log/pgsql.log" stop

其中POSTGRESQL_ROOT是pgsql文件夹的完整路径。

答案 6 :(得分:1)

为防止出现其他问题,您还应排除病毒扫描程序扫描数据目录(Postgres放置其数据的位置)

答案 7 :(得分:1)

I had the same problem with installing PostgreSQL (Unable to write in TEMP environment variable path), the problem was in Windows Script Host which was disabled (check the log file to see if this is your problem). enable it with register editor (run-->regedit) at this location Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows Script Host\Settings by setting its value at 1

For more details check this web link: http://1stopit.blogspot.com/2011/01/postgresql-83-and-84-fails-to-install.html

答案 8 :(得分:1)

我的问题是Smad-Av禁用Windows Scripts运行, 只有经过这个线程我才记得。 我刚刚右键单击Smad-Av图标并选择允许Windows脚本& Office-Macro(永久)

答案 9 :(得分:1)

就我而言,我已经下载了McAfee删除工具 MCPR (McAfee Consumer Product Removal) 在卸载McAfee后清理了一些尾矿。

之前有InprocServer32个值'c:\program files\common files\mcafee\systemcore\...'的某些注册表项已更改回其原始值:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32\(default) = vbscript.dll
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32\(default) = C:\Windows\SysWow64\vbscript.dll

之后我成功安装了PostgreSQL 9.3

答案 10 :(得分:1)

尝试在Windows 7 64位上安装32位版本时出现此问题。

尝试64位安装工具包没有出现任何错误,但其他人提供的解决方案也是有效的。

答案 11 :(得分:1)

在我的情况下,导致问题的是另一个应用程序。不是Notepad ++。对于遇到此问题的其他人,您可以先删除C:\Documents and Settings\UserName\Local Settings\Temp中的所有文件进行诊断,这样当您再次尝试安装postgresql并查看其中的说明时,您就可以轻松找到bitrock_installer.log 。将注册表的HKEY_CLASSES_ROOT.vbs部分中的(默认)键更改为VBSFile解决了它。

答案 12 :(得分:0)

当Notepad ++关联.vbs文件类型时会发生这种情况。 你可以打开notepad ++ - >偏好 - >文件关联 从注册的exts中删除.vbs。 关闭记事本++。尝试再次安装Postgres。

答案 13 :(得分:0)

在我的情况下,将HKEY_CLASSES_ROOT中的(默认)键,注册表中的.vbs部分更改为VBSFile解决了它。 BlueFish是抓取.vbs文件关联。

答案 14 :(得分:0)

我的解决方案类似于#5,解释了McAfee破坏您的vbscript注册的方式和原因。

显然,当我在我的计算机上安装McAfee防病毒软件时,它会抨击Windows Scripting Host需要运行.vbs文件的vbscript.dll注册。

在导出的.REG文件中:

[HKEY_CLASSES_ROOT \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} \ InprocServer32的] @ =“C:\ Program Files \ Common Files \ McAfee \ SystemCore \ ScriptSn.20120327211246.dll”

现在应该改回“C:\ Windows \ System32 \ vbscript.dll”。

迈克菲显然安装了一个劫持vbscript.dll的DLL,以便尝试保护糟糕的脚本不被运行。当我卸载McAfee以支持Microsoft

Security Essentials,迈克菲没有恢复注册表路径(“不是 我的问题“),当然,McAfee DLL在卸载过程中已从该位置删除,因此vbscript.dll注册实际上指向NOWHERE和NOTHING。

必须有一种更好的方法来编写防病毒软件,以便在卸载时或在功能时不会禁用用户的操作系统 关闭,或取代注册。请参阅以下内容:

https://kc.mcafee.com/corporate/index?page=content&id=KB71660

我有一个64位操作系统。注册表路径在许多位置已更改。

常规类ID应指向“C:\ Windows \ System32 \ vbscript.dll”64位文件。

“Wow6432Node”注册表路径应指向“C:\ Windows \ SysWOW64 \ vbscript.dll”32位文件。

是的,64位位于“32”文件夹中,32位位于“SysWOW64”文件夹中。 Microsoft迁移到64位时,不希望更改主“System32”执行文件夹的名称。

HKEY_CLASSES_ROOT \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ System32下\ vbscript.dll中

HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\的Windows \ Syswow64资料\ vbscript.dll中

HKEY_LOCAL_MACHINE \ SOFTWARE \类\ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ System32下\ vbscript.dll中

HKEY_LOCAL_MACHINE \ SOFTWARE \类\ Wow6432Node \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\的Windows \ Syswow64资料\ vbscript.dll中

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \类\ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\的Windows \ Syswow64资料\ vbscript.dll中

答案 15 :(得分:0)

在临时目录中,我的bitrock_installer.log文件包含以下内容:

Executing cscript //NoLogo "C:\Users\MyUser\Local 
Settings\postgresql_installer_1b4eec8be6\prerun_checks.vbs"
Script exit code: 1

Script output:
Input Error: Can not find script file "C:\Users\MyUser\Local 
Settings\postgresql_installer_1b4eec8be6\prerun_checks.vbs".

原来,Windows在以下目录之间有一个符号链接:

  • C:\ Users \ cpetrie \ Local Settings \ Temp
  • C:\用户\ cpetrie \应用程序数据\本地\温度

出于某种原因,我的" TMP"和" TEMP"用户变量引用了"本地设置"路径而不是" AppData"路径。更改此修复了我的安装问题。

答案 16 :(得分:0)

检查系统TEMP目录中的日志(前提是安装程序能够写入该目录)。 有很多关于错误的信息。

我的问题是VBS文件与文本编辑器相关联(可能反病毒软件是罪魁祸首)。

在这里,您可以找到一些reg编辑脚本以恢复默认行为: http://www.nilpo.com/2009/07/windows-xp/restoring-vbs-vbscript-script-file-file-associations/#more-107

干杯

答案 17 :(得分:0)

在开始搞乱注册表之前,请检查WSH是否实际上已禁用。为此,在DOS框中运行wscript.exe。

如果您看到一个名为" Windows脚本宿主设置"的对话框,则启用WSH,并且您的PostgreSQL安装问题必须与其他内容相关。  如果出现错误框,表示"在此计算机上禁用了Windows脚本宿主访问。请联系您的管理员以获取详细信息",WSH已禁用,并且您安装PostgreSQL的问题可能与其相关(或可能不是)。

对我来说,我的问题与Windows脚本有关。我通过右键单击任务栏中隐藏图标中的smadav图标并选中"允许Windows脚本和Office宏(永久)"来解决此问题。然后再次双击PostgreSQL设置。

答案 18 :(得分:0)

首先转到注册表编辑器,然后选择HKEY_CURRENT_USER>软件> Microsoft> Windows脚本宿主>设置>默认>将值数据添加到1,然后单击确定。完成!

答案 19 :(得分:0)

禁用Smad Av后,它仍然无法正常工作。因此,我右键单击了Smad Av托盘图标,然后选择了“允许Windows脚本和Office宏(永久)”,它可以正常工作。

答案 20 :(得分:0)

在Windows 10中,我遇到了同样的问题,罪魁祸首是操作系统的许可,或者说是缺少操作系统的许可,以允许可执行文件写入用户专用的Temp文件夹。

通过遵循我的直觉并将User Temp文件夹更改为与系统相同的方法来解决该问题:Win + Pause / Break以显示“计算机属性”窗口(您可以通过右键单击桌面上的“计算机”图标来手动执行此操作- >属性)->单击左侧面板上的高级系统设置->单击环境变量,然后 在“系统变量”的“变量”下,找到TEMP和TMP变量并复制其路径。然后,在“管理员的用户变量”-变量下,找到TEMP和TMP,然后粘贴路径。无论如何,它总是最“ C:\ Windows \ TEMP”;)

我读过一个网站:https://www.askvg.com/where-does-windows-store-temporary-files-and-how-to-change-temp-folder-location/

答案 21 :(得分:0)

这是一个旧线程,但是我在Windows 10上遇到了同样的问题:

  

无法在TEMP环境路径中写入

执行以下步骤

  1. 检查问题是否与Windows Script Host有关。
  2. cmd 运行wscript.exe
  3. 如果遇到错误,则未启用Windows脚本宿主,可以通过从 cmd
  4. 运行来解决此问题。

修复当前用户

REG DELETE "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /f

修复本地计算机

REG DELETE "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /f

否,您可以安装psql

答案 22 :(得分:0)

  1. 搜索“注册表编辑器”并运行它。
  2. 选择HKEY_CURRENT_USER => SOFTWARE => Microsoft => Windows脚本宿主=>设置(计算机\ HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows脚本宿主\设置)
  3. 打开“已启用”并将值数据更改为“ 1”。(您会发现它的vlaue值为0)。
    祝您编程愉快!