我怎样才能阻止此 win7 消息“您是否要允许...未知发布者..进行更改...”与其出现的 exe 一起出现?

我怎样才能阻止此 win7 消息“您是否要允许...未知发布者..进行更改...”与其出现的 exe 一起出现?

标题 - 如何从出现此消息的 exe 中删除 Win7 消息“您是否要允许来自未知发布者的以下程序对您的计算机进行更改”?

我收到了一条类似这样的消息

在此处输入图片描述

当我尝试运行 EXE 时

EXE 是 MFTRCRD64.exe

https://github.com/jschicht/MftRcrd

单击绿色的“克隆或下载”,然后单击蓝色的“下载 zip”

在此处输入图片描述

我尝试复制c:\windows\system32\calc.exe到 c:\ab,也尝试将该 exe (MFTRCRD64.exe) 复制到 c:\ab。 calc.exe(calc.exe 当然是 MS 的),没有问题。我编写和编译的任何程序都没有问题。但是这个程序弹出一条消息。其他人编写的许多程序都没有弹出该消息。不知为何,这个程序弹出了这条消息。

EXE 上没有附加任何流,所以我看不出是什么原因造成的。我知道 Win XP 过去会弹出一些安全问题,你可以删除与文件关联的区域标识符流,这样就没问题了。但这次不同,是 UAC 发出了消息(当然,Win7 有 UAC,Win XP 没有)。

但对于我从任何地方获取的几乎任何可执行文件,我都不会收到此 UAC 消息。但我收到此 MFTRCRD64.EXE 文件的 UAC 消息。因此,这肯定与文件的生成方式有关,我想知道我是否可以更改它。

C:\ab>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\ab

01/10/2016  12:31 AM    <DIR>          .
01/10/2016  12:31 AM    <DIR>          ..
14/07/2009  02:38 AM           918,528 calc.exe
15/09/2015  09:42 PM         1,099,499 MFTRCRD64.exe
               2 File(s)      2,018,027 bytes
               2 Dir(s)   7,114,272,768 bytes free

C:\ab>calc

C:\ab>MFTRCRD64.exe

C:\ab>streams MFTRCRD64.exe

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com


C:\ab>

Rik 提出了一个有趣的观点,即它可能试图写入某个不允许写入的地方,而你必须以管理员身份写入。事实上,在管理员命令提示符下,我没有看到该框出现。

“您遇到了 UAC 的“安装程序检测技术”或 IDT。它会尝试检测它是否正在处理“安装程序”,如果是,则会向您提供提示。这里有两个链接,您可以阅读更多相关信息,并查看 IDT 方法列表,看看是否可以解决它。 http://answers.microsoft.com/en-us/windows/forum/windows_7-security/uac-message-do-you-want-to-allow-the-following/bea30ad8-9ef8-4897-aab4-841a65f7af71http://technet.microsoft.com/en-us/library/cc709628(v=ws.10).aspx

answers.microsoft.com 链接显示“当未知程序(未签名)尝试将数据写入受保护的系统文件夹或注册表设置时,会发生这种情况,而 UAC 正在寻求您的许可”

technet 链接说

文件名包括“安装”、“设置”、“更新”等关键字。以下版本控制资源字段中的关键字:供应商、公司名称、产品名称、文件说明、原始文件名、内部名称和导出名称。可执行文件中嵌入的并排清单中的关键字。可执行文件中链接的特定 StringTable 条目中的关键字。可执行文件中链接的 RC 数据中的关键属性。可执行文件中的目标字节序列。

我已经包含了一些来自处理器监视器的输出(我知道它已经取代了 regmon),但我不知道它正在访问的文件夹区域的哪些注册表区域可能会触发该操作(如果它甚至会触发该操作)

http://pastebin.com/raw/A5XC6pEk

我尝试编写 ac sharp 程序来写入你必须管理的区域(创建文件 c:\program files\abc.aaa),http://pastebin.com/raw/4K28DvzK但我注意到这并没有触发 UAC,只是产生了未经授权的访问异常。

我也尝试运行文件名中带有设置的 32 位 exe,但没有触发它

C:\crp3>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp3

02/10/2016  01:31 PM    <DIR>          .
02/10/2016  01:31 PM    <DIR>          ..
22/02/2014  08:21 PM        12,689,608 a_setup_.exe
15/09/2015  09:42 PM         1,099,499 MFTRCRD64.exe
25/07/2015  01:03 AM            73,216 w.exe
               3 File(s)     13,862,323 bytes
               2 Dir(s)   7,455,793,152 bytes free

C:\crp3>file a_setup_.exe
a_setup_.exe; PE32 executable for MS Windows (GUI) Intel 80386 32-bit

C:\crp3>a_setup_.exe

C:\crp3> :: didn't trigger it
C:\crp3>

进一步补充

我接受 rik 的回答以及 dan 在讨论中做出的巨大贡献。

不过我要指出的是,当我从顶部删除该 RequireAdmin 行时,在非管理或管理 cmd 提示符中没有收到任何响应。

但这并不重要。rik 和 dan 都得到了相同的错误响应。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\harvey>cd \crp4

C:\crp4>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4

02/10/2016  03:51 PM    <DIR>          .
02/10/2016  03:51 PM    <DIR>          ..
02/10/2016  03:15 PM             1,517 changelog.txt
02/10/2016  03:15 PM             1,114 LICENSE.md
02/10/2016  03:15 PM           163,548 MFTRCRD.au3
02/10/2016  03:51 PM         1,222,656 mftrcrd.exe
02/10/2016  03:15 PM           755,712 mftrcrd2.exe
02/10/2016  03:15 PM           792,064 MFTRCRD64.exe
02/10/2016  03:16 PM         1,222,656 MFTRCRDNEW.exe
02/10/2016  03:15 PM           755,712 MFTRCRD_old.exe
02/10/2016  03:47 PM         1,222,656 MFTRCRD_sci.exe
02/10/2016  03:15 PM                 0 readme.txt
              10 File(s)      6,137,635 bytes
               2 Dir(s)   7,346,610,176 bytes free

C:\crp4>mftrcrd.exe

C:\crp4>mftrcrd64.exe

C:\crp4>notepad.exe MFTRCRD.au3

C:\crp4>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4>
C:\crp4>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4>file mftrcrd.exe
mftrcrd.exe; PE32 executable for MS Windows (GUI) Intel 80386 32-bit

C:\crp4>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4

02/10/2016  03:51 PM    <DIR>          .
02/10/2016  03:51 PM    <DIR>          ..
02/10/2016  03:15 PM             1,517 changelog.txt
02/10/2016  03:15 PM             1,114 LICENSE.md
02/10/2016  03:15 PM           163,548 MFTRCRD.au3
02/10/2016  03:51 PM         1,222,656 mftrcrd.exe
02/10/2016  03:15 PM           755,712 mftrcrd2.exe
02/10/2016  03:15 PM           792,064 MFTRCRD64.exe
02/10/2016  03:16 PM         1,222,656 MFTRCRDNEW.exe
02/10/2016  03:15 PM           755,712 MFTRCRD_old.exe
02/10/2016  03:47 PM         1,222,656 MFTRCRD_sci.exe
02/10/2016  03:15 PM                 0 readme.txt
              10 File(s)      6,137,635 bytes
               2 Dir(s)   7,348,428,800 bytes free

C:\crp4>MFTRCRD_sci C?0x100000 -d indxdump=off 4096 -s

C:\crp4>mftr_old.exe C?0x100000 -d indxdump=off 4096 -s
'mftr_old.exe' is not recognized as an internal or external command,
operable program or batch file.

C:\crp4>mftrcrd_old.exe C?0x100000 -d indxdump=off 4096 -s

C:\crp4>md a

C:\crp4>copy mftrcrd.exe
The file cannot be copied onto itself.
        0 file(s) copied.

C:\crp4>copy mftrcrd.exe a
        1 file(s) copied.

C:\crp4>cd a

C:\crp4\a>del mftrcrd.exe

C:\crp4\a>cd ..

C:\crp4>cd a

C:\crp4\a>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:37 PM    <DIR>          .
02/10/2016  04:37 PM    <DIR>          ..
02/10/2016  04:37 PM    <DIR>          MftRcrd-master
               0 File(s)              0 bytes
               3 Dir(s)   7,346,700,288 bytes free

C:\crp4\a>cd MftRcrd-master

C:\crp4\a\MftRcrd-master>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a\MftRcrd-master

02/10/2016  04:37 PM    <DIR>          .
02/10/2016  04:37 PM    <DIR>          ..
02/10/2016  04:37 PM             1,517 changelog.txt
02/10/2016  04:37 PM             1,114 LICENSE.md
02/10/2016  04:37 PM           163,563 MFTRCRD.au3
02/10/2016  04:37 PM           755,712 MFTRCRD.exe
02/10/2016  04:37 PM           792,064 MFTRCRD64.exe
02/10/2016  04:37 PM                 0 readme.txt
               6 File(s)      1,713,970 bytes
               2 Dir(s)   7,346,700,288 bytes free

C:\crp4\a\MftRcrd-master>move * ..\
C:\crp4\a\MftRcrd-master\changelog.txt
C:\crp4\a\MftRcrd-master\LICENSE.md
C:\crp4\a\MftRcrd-master\MFTRCRD.au3
C:\crp4\a\MftRcrd-master\MFTRCRD.exe
C:\crp4\a\MftRcrd-master\MFTRCRD64.exe
C:\crp4\a\MftRcrd-master\readme.txt
        6 file(s) moved.

C:\crp4\a\MftRcrd-master>cd ..

C:\crp4\a>rmdir /s MftRcrd-master
MftRcrd-master, Are you sure (Y/N)? y

C:\crp4\a>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:37 PM    <DIR>          .
02/10/2016  04:37 PM    <DIR>          ..
02/10/2016  04:37 PM             1,517 changelog.txt
02/10/2016  04:37 PM             1,114 LICENSE.md
02/10/2016  04:37 PM           163,563 MFTRCRD.au3
02/10/2016  04:37 PM           755,712 MFTRCRD.exe
02/10/2016  04:37 PM           792,064 MFTRCRD64.exe
02/10/2016  04:37 PM                 0 readme.txt
               6 File(s)      1,713,970 bytes
               2 Dir(s)   7,346,503,680 bytes free

C:\crp4\a>MFTRCRD.exe

C:\crp4\a>copy MFTRCRD.exe mftrcrd_original.exe
        1 file(s) copied.

C:\crp4\a>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:38 PM    <DIR>          .
02/10/2016  04:38 PM    <DIR>          ..
02/10/2016  04:37 PM             1,517 changelog.txt
02/10/2016  04:37 PM             1,114 LICENSE.md
02/10/2016  04:37 PM           163,563 MFTRCRD.au3
02/10/2016  04:37 PM           755,712 MFTRCRD.exe
02/10/2016  04:37 PM           792,064 MFTRCRD64.exe
02/10/2016  04:37 PM           755,712 mftrcrd_original.exe
02/10/2016  04:37 PM                 0 readme.txt
               7 File(s)      2,469,682 bytes
               2 Dir(s)   7,345,741,824 bytes free

C:\crp4\a>"\Program Files (x86)\AutoIt3\SciTE\SciTE.exe"

C:\crp4\a>del mftrcrd.exe

C:\crp4\a>dir mftrcrd.exe
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

File Not Found

C:\crp4\a>:: opened  mftrcrd.au3, done tools..compile
C:\crp4\a>
C:\crp4\a>dir
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:40 PM    <DIR>          .
02/10/2016  04:40 PM    <DIR>          ..
02/10/2016  04:37 PM             1,517 changelog.txt
02/10/2016  04:37 PM             1,114 LICENSE.md
02/10/2016  04:37 PM           163,563 MFTRCRD.au3
02/10/2016  04:40 PM         1,222,656 MFTRCRD.exe
02/10/2016  04:37 PM           792,064 MFTRCRD64.exe
02/10/2016  04:37 PM           755,712 mftrcrd_original.exe
02/10/2016  04:37 PM                 0 readme.txt
               7 File(s)      2,936,626 bytes
               2 Dir(s)   7,345,045,504 bytes free

C:\crp4\a>>MFTRCRD C?0x100000 -d indxdump=off 4096 -s
'C?0x100000' is not recognized as an internal or external command,
operable program or batch file.

C:\crp4\a>MFTRCRD C?0x100000 -d indxdump=off 4096 -s
Access is denied.

C:\crp4\a>head -n 1 mftrcrd.au3
#RequireAdmin

C:\crp4\a>notepad.exe MFTRCRD.au3

C:\crp4\a>:: removed that line
C:\crp4\a>del mftrcrd.exe

C:\crp4\a>dir mftrcrd.exe
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:40 PM         1,222,656 MFTRCRD.exe
               1 File(s)      1,222,656 bytes
               0 Dir(s)   7,345,041,408 bytes free

C:\crp4\a>del mftrcrd.exe
C:\crp4\a\MFTRCRD.exe
Access is denied.

C:\crp4\a>dir mftrcrd.exe
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

File Not Found

C:\crp4\a>:: tools..compile
C:\crp4\a>dir mftrcrd.exe
 Volume in drive C has no label.
 Volume Serial Number is B411-D580

 Directory of C:\crp4\a

02/10/2016  04:43 PM         1,222,656 MFTRCRD.exe
               1 File(s)      1,222,656 bytes
               0 Dir(s)   7,345,041,408 bytes free

C:\crp4\a>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

C:\crp4\a>

添加-

removing that #RequireAdmin line and doing `"C:\Program Files (x86)\AutoIt3\Aut2Exe\Aut2exe.exe" /in MFTRCRD.au3 /console` both as Rik suggested, and I reproduce what Rik gets.

答案1

好的,为了在讨论中进行一些诊断后得出答案,这里有一个总结。

MFTRCRD64.exe 是一个高级(编译)autoit3 脚本,可直接访问硬盘。au3 脚本(参见下载)的第一行是#RequireAdmin。因此,生成的 .exe 将需要提升权限,从而导致出现给定的提示。

接下来的问题是,脚本是否可以在没有提升的情况下运行(没有 -line #RequireAdmin)。将其编译为控制台 exe 后(这是必需的,否则没有控制台输出),用户模式下的错误消息是Error in function CreateFile for: \\.\C:

这是因为脚本/exe 尝试访问物理磁盘。CreateFile('\\.\C')将返回一个句柄,您可以在其他 api 调用中使用该句柄来获得直接磁盘访问权限。但是,只有调用者具有管理权限时才允许使用物理直接磁盘。请参阅CreateFile() 文档。因此需要#RequireAdmin-line 和后续的 UAC 提示。

来自用户控制台的输出(未提升):

C:\Users\Rik\Downloads\MftRcrd-master\MftRcrd-master>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

Starting MFTRCRD by Joakim Schicht
Version 1.0.0.38

Target offset is: 0x0000000000100000

Filesystem on C: is NTFS
Error in function CreateFile for: \\.\C:

当升高时:

C:\Users\Rik\Downloads\MftRcrd-master\MftRcrd-master>MFTRCRD C?0x100000 -d indxdump=off 4096 -s

Starting MFTRCRD by Joakim Schicht
Version 1.0.0.38

Target offset is: 0x0000000000100000

Filesystem on C: is NTFS
BytesPerSector:  512
SectorsPerCluster:  8
ReservedSectors:  0
SectorsPerTrack:  63
NumberOfHeads:  255
HiddenSectors:  1028160
TotalSectors:  486442304
LogicalClusterNumberforthefileMFT:  31285383
LogicalClusterNumberforthefileMFTMirr:  874
MFT Record Size: 1024

Found record is not valid:
0000    4d 41 4d 04 a0 dd 00 00  a5 a8 b6 9a 99 b8 aa a9   MAM.............
0010    99 a7 aa aa 99 b7 aa aa  a9 b7 aa aa a9 b7 9a a9   ................
0020    99 97 aa 9a 98 c7 ba bb  89 97 99 99 99 a8 99 8a   ................
etc.

相关内容