Answers:
最好的方法是直接转到安装了Notepad ++的文件夹(32位Windows的程序文件和64位Windows的程序文件(x86)),在其中找到Notepad ++可执行文件,右键单击它,然后选择兼容性,然后在底部选中“以管理员身份运行”框。
这将使您的应用程序始终弹出UAC警告,但您始终可以以管理员身份进行编辑。
祝好运!
编辑:找到了本文,您可以在不启动UAC提示符的情况下创建快捷方式。从技术上讲,它适用于Windows 10,但在Win7 +上应以相同的方式工作。
Advanced...
上的按钮Shortcut
以启用它),这样,如果您更新notepad ++,它将同时更新您的非提升版和高架捷径。
我发现在“开始”菜单中搜索编辑器程序(例如Notepad ++),然后键入Ctrl+ Shift+ Enter可让您以管理员身份运行该程序。
然后,您应该能够打开和编辑需要提升特权的文件。
作为对@Askeli答案的改进,您可以首先制作notepad ++可执行文件的副本(将其命名为NotepadUAC之类)。然后,根据Askeli的建议,在副本属性中将兼容模式设置为要求管理员模式。现在,您还应该能够将.config文件设置为使用副本而不是原始文件打开。
这样做的好处是,在打开带有原始(默认)Notepad ++ .exe文件的文件时,您不会看到UAC提示。缺点是此副本不一定会以与原始副本相同的方式保持最新,并且最终可能会导致.dll或配置版本不匹配的问题。但是,如果发生这种情况,卸载/重新安装总是很容易的。
当原始问题于2010年发布时,尚无此功能,但截至2012年- 最佳答案(至少在我看来是这样):
安装nppSaveAsAdmin:
从http://sourceforge.net/projects/nppsaveasadmin:
该插件允许您将任何文件保存为管理员。只需在Notepad ++中按“保存”,如果不允许您以用户身份更改此文件,Notepad ++会将其保存为管理员。支持Windows XP,Windows Vista,Windows 7,Windows 8。
可从Notepad ++插件管理器中快速轻松地安装“另存为管理员”插件。(插件/插件管理器/显示插件管理器/可用。选中“另存为管理员”,单击“安装”。)
Notepad ++将继续照常运行,而无需使用完整的管理UAC令牌运行。但是,如果Notepad ++看到您正在尝试保存一个文件,否则将不允许该文件访问NppAdminAccess.exe(显示UAC提示符)。只需单击“是”,您的文件将以管理权限保存。
卸载插件(插件管理器除外)。这为我解决了问题。您可以一次安装一个插件,以查看哪个插件引起了问题。
以下解决方案实际上并不能实现双击方案,但可以为您提供选择的权力(从技术上来说,这也是两次单击):
您可以按文件类型(或按程序)向外壳上下文菜单添加“以管理员身份运行”菜单项。请参阅本文以获取有关注册表调整的详细信息。
最好的方法是将Notepad ++设置为以管理员身份运行。问题在于它破坏了右键单击选项。因此,我对右键单击选项进行了替换,以删除旧选项。我的修复程序的一个不错的部分是我将其添加到了注册表中的“目录”设置中。因此,现在您可以右键单击一个文件夹,然后选择“使用Notepad ++编辑”,它将在Notepad ++中打开所有文件:)。我做了很多VBScript编程。当我想出一种做某事或更改一个对象的新方法时,这使我很容易编辑所有文件进行全局更改。
我的VBScript在更改注册表项之前先对其进行备份。它没有将Notepad ++设置为管理员,因此您必须通过右键单击Notepad ++可执行文件并将其更改为以管理员身份运行来做到这一点。我开始研究如何使其以管理员身份运行。当我提出这个建议时,我将编辑我的帖子,以便您可以选择以“管理员”身份编辑或正常编辑。
'==========================================================================================
' NAME: New-OpenWithNotepad++(WinVista7).vbs
' EDITED: Kevin Dondrea , Gordos-Dondrea Enterprises and Foundation
' DATE : 8/12/2012
' COMMENT: This script Exports Registry keys and replaced Notepad++ Right Click options.
' Works with Windows Vista and 7. Also works for restricted Win XP accounts.
' WEB LINK:
'==========================================================================================
Option Explicit
' =============== START ADD ADMIN RIGHTS ===============
' This adds the Admin Run Function for Windows Vista and 7
' You must put this at the top below computer and End If at the
' very end of the script
If WScript.Arguments.length = 0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "WScript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
Else
' Do not forget to add End If at the end of the script
' =============== END ADD ADMIN RIGHTS ===============
On Error Resume Next
' =============== START CONSTANT VARIABLES ===============
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
' =============== END CONSTANT VARIABLES ===============
' =============== START DIM VARIABLES ===============
Dim objFSO, objWrite2File, objShell, objReg, objRegistry, objWshShell
Dim strDate, strTime, strTime2, strFileName, strOpenFile
Dim strComputer, strCommand, strHostName, strUserName
Dim intRC, strKeyPath, strValueName, strValue
' =============== END DIM VARIABLES ===============
' --------------------------------------------------------------------------
' =============== START COMPUTER NAME, TIME and DATE ===============
strComputer = "."
' Reads registry for Computer Name
Set objShell = CreateObject("WScript.Shell")
' Edit or Add with Registrry Object
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
' Same as above but used only to delete registry key
Set objRegistry=GetObject("winmgmts:\\" & _
strComputer & "\root\default:StdRegProv")
strHostName = objShell.RegRead ("HKLM\SYSTEM\CurrentControlSet\Services\" & _
"Tcpip\Parameters\Hostname")
strUserName = objShell.RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\" & _
"CurrentVersion\Winlogon\DefaultUserName")
' Retreives Date and Time
strTime = Right("0" & Hour(now()), 2) & Right("00" & _
Minute(Now()), 2) & Second(Now())
strTime2 = Right("0" & Hour(now()), 2) & ":" & Right("00" & ":" & _
Minute(Now()), 2) & ":" & Second(Now())
strDate = Right("0" & Month(now()), 2) & "-" & Right("00" & _
Day(Now()), 2) & "-" & Year(Now())
' -----------------------------------------------------------
' =============== START BACKUP OF REGISTRY KEYS USED FOR ===============
' Original Command
' strCommand = "regedit /e <FilePath> <RegKey>"
' Local Machine ......
strCommand = "regedit /e " & strHostName & "-" & strDate & "-" & _
strTime & "-BackupLM-Notepad++.reg " & _
"""HKEY_LOCAL_MACHINE\SOFTWARE\Classes" & _
"\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}"""
Set objWshShell = WScript.CreateObject("WScript.Shell")
intRC = objWshShell.Run(strCommand, 0, TRUE)
If intRC <> 0 then
WScript.Echo "Error returned from exporting Registry: " & intRC
Else
WScript.Echo "No errors returned from exporting the Registry file"
End If
' =============== END BACKUP OF REGISTRY KEYS USED FOR ===============
' -----------------------------------------------------------
' =============== START NEW OPEN * SHELL COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "*\shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath
' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue
' =============== START NEW OPEN DIRECTORY SHELL COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "Directory\shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath
' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue
' -----------------------------------------------------------
strKeyPath = "*\shellex\ContextMenuHandlers\ANotepad++"
objRegistry.DeleteKey HKEY_CLASSES_ROOT,strKeyPath
strKeyPath = "SOFTWARE\Classes\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}\Settings"
objRegistry.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath
' Ending Message
MsgBox"Notepad++ Right-Click Settings" & VbCrLf & _
"Have Been Created", ,"Click OK To Close Window"
' Cleans up Variables From Memory
Set objFSO = Nothing
Set objWrite2File = Nothing
Set objShell = Nothing
Set objReg = Nothing
Set objRegistry = Nothing
Set objWshShell = Nothing
Set strDate = Nothing
Set strTime = Nothing
Set strTime2 = Nothing
Set strFileName = Nothing
Set strOpenFile = Nothing
Set strComputer = Nothing
Set strCommand = Nothing
Set strHostName = Nothing
Set strUserName = Nothing
Set intRC = Nothing
Set strKeyPath = Nothing
Set strValueName = Nothing
Set strValue = Nothing
End If