Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6使用写入#1(单位计数_Vb6_Windows Xp_Windows Vista - Fatal编程技术网

VB6使用写入#1(单位计数

VB6使用写入#1(单位计数,vb6,windows-xp,windows-vista,Vb6,Windows Xp,Windows Vista,我有一个使用表达式的遗留VB6系统 Write#1,(单位计数 写入文本文件。(UnitCount是写入的几个短整数的第一个。) 这在XP下运行良好,但在Vista和Windows 8下不会生成文本文件。未报告任何错误 有人知道如何解决这个问题吗 另外-VB6应用程序安装在C:/Program Files/IronDuke中 文本文件也要写在这里(即在当前目录中) 我知道结束括号。我只包括了语句的一部分。文件实际上是创建的,您就是找不到它。它存储在独立的存储中 这是从Vista开始的现代Wind

我有一个使用表达式的遗留VB6系统

Write#1,(单位计数

写入文本文件。(UnitCount是写入的几个短整数的第一个。)

这在XP下运行良好,但在Vista和Windows 8下不会生成文本文件。未报告任何错误

有人知道如何解决这个问题吗

另外-VB6应用程序安装在C:/Program Files/IronDuke中

文本文件也要写在这里(即在当前目录中)


我知道结束括号。我只包括了语句的一部分。

文件实际上是创建的,您就是找不到它。它存储在独立的存储中

这是从Vista开始的现代Windows版本中的appcompat功能。不再允许程序写入
c:\program files
c:\program files(x86)
,您将在64位操作系统上写入的目录。UAC保护这些目录不受恶意软件和意图良好但危险的程序的攻击。该程序必须通过显示UAC提示符来获得提升的权限,以让用户知道它将进行可能影响其机器的重大更改

由于您的VB6 EXE文件在Windows中看起来像一个不支持UAC的古老程序,这是一个非常准确的猜测,它将自动将文件重定向到独立的存储,以允许您的程序正确执行。您也可以轻松地读回该文件。但当然,这不是您真正想要完成的

让您的程序显示UAC提升提示有点棘手,VB6不是设计用来在EXE文件中嵌入清单的。清单在15年前就不存在了。您需要在与yourapp.EXE文件相同的目录中创建一个名为yourapp.EXE.manifest的文件。请使用可以编写utf-8编码文件(不是VB6)的文本编辑器让它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>


请注意,在64位操作系统上仍然存在严重问题,最终将写入c:\program files(x86)而不是C:\程序文件。没有简单的解决办法。请考虑寻找更适合现代操作系统的现代工具,VB.NET肯定会给您带来更少的麻烦。

< P>文件实际上是创建的,只是找不到它。它被存储在隔离存储中。

这是从Vista开始的现代Windows版本中的appcompat功能。不再允许程序写入
c:\program files
c:\program files(x86)
,您将在64位操作系统上写入的目录。UAC保护这些目录不受恶意软件和意图良好但危险的程序的攻击。该程序必须通过显示UAC提示符来获得提升的权限,以让用户知道它将进行可能影响其机器的重大更改

由于您的VB6 EXE文件在Windows中看起来像一个不支持UAC的古老程序,这是一个非常准确的猜测,它将自动将文件重定向到独立的存储,以允许您的程序正确执行。您也可以轻松地读回该文件。但当然,这不是您真正想要完成的

让您的程序显示UAC提升提示有点棘手,VB6不是设计用来在EXE文件中嵌入清单的。清单在15年前就不存在了。您需要在与yourapp.EXE文件相同的目录中创建一个名为yourapp.EXE.manifest的文件。请使用可以编写utf-8编码文件(不是VB6)的文本编辑器让它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>


请注意,在64位操作系统上仍然存在严重问题,最终将写入c:\program files(x86)而不是C:\程序文件。没有简单的解决办法。请考虑寻找更适合现代操作系统的现代工具,VB.NET肯定会给你带来更少的麻烦。

< p>你的应用程序被当作遗留的(不是Vista知道的),所以你写入受保护位置的文件正在虚拟化。(非“隔离”)而不是导致安全冲突异常。每个用户的配置文件路径中都存在文件系统VirtualStore

VB6完全有可能嵌入应用程序清单,但它不会为您生成清单。您只需单独创建清单文件,然后将其作为类型为#24、Id为#1的自定义资源包含,它将立即在中编译

需要注意的一点是,清单文件应使用UTF-8 XML填充到4字节的偶数倍。如果需要填充,您可以在末尾添加空格。您可以从记事本将其保存为ANSI,因为通常只使用7位ASCII字符子集,这避免了UTF-8 BOM的风险,您不希望记事本写入

在需要时,甚至有一些简单的方法可以绕过WOW64重定向,尽管没有很好的理由这样做


但是,如果程序确实正在将此文件写入其当前目录,您可能会发现修改“开始”菜单快捷方式或创建新的快捷方式要容易得多。只需设置快捷方式的当前目录(“开始于”)到某些合法的可写位置,如您的文档目录、D:驱动器上的某些目录、公用特殊文件夹等。

您的应用程序被视为遗留(不支持Vista),因此您写入受保护位置的文件被虚拟化(而非“隔离”)而不是导致安全冲突异常。每个用户的配置文件路径中都存在一个文件系统VirtualStore

VB6完全有可能嵌入应用程序清单,但它不会为您生成清单。您只需单独创建清单文件,然后将其作为类型为#24、Id为#1的自定义资源包含,它将立即在中编译

一个洞穴