如何在管理员模式下打开文件进行编辑?
我将.config文件设置为在Notepad++中打开。我编辑的文件通常在受保护的位置(例如c:\windows\, c:\program files…, 等等),因此需要管理员权限。
我希望能够双击一个.config文件,然后用管理员权限打开Notepad++。如果出现UAC提示就可以了。
有什么方法可以做到吗?
我将.config文件设置为在Notepad++中打开。我编辑的文件通常在受保护的位置(例如c:\windows\, c:\program files…, 等等),因此需要管理员权限。
我希望能够双击一个.config文件,然后用管理员权限打开Notepad++。如果出现UAC提示就可以了。
有什么方法可以做到吗?
最好的方法是直接进入安装Notepad++的文件夹(32位Windows的Program Files和64位Windows的Program Files(x86)),在那里找到Notepad++的可执行文件,右击它,然后选择Compatibility,在底部勾选Run as administrator。
这将使你的应用程序总是弹出一个UAC警告,但你总是可以以管理员身份编辑。
祝你好运
编辑:找到了这篇文章它允许你在不启动UAC提示的情况下创建快捷方式。从技术上讲,它适用于Windows 10,但在Win7+上应该以同样的方式工作。
作为对 @Askeli 的回答 的改进,你可以先制作一个 notepad++ 可执行文件的副本(命名为 NotepadUAC)。然后按照Askeli的建议,在副本的属性中设置兼容性模式为需要管理员模式。现在你应该也可以设置你的.配置文件使用副本而不是原版打开。
这里的好处是,当你用原来的(默认)Notepad++ .exe文件打开文件时,你不会看到UAC提示。缺点是这个副本不一定会像原始文件一样保持更新,最终可能会导致.dll或配置版本不匹配的问题。但如果发生这种情况,卸载/重新安装总是很容易的。
当2010年发布原始问题时,这还没有,但截至2012年–最佳答案(至少我认为是这样):
安装nppSaveAsAdmin:
From 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
卸载插件(除了插件管理器)。这为我解决了问题。你可以一次安装一个插件,看看是哪个插件导致的问题。