我正在使用Windows 7,我必须在该Windows中运行一个程序,但该程序在Windows XP中运行.这是一个Visual C++程序,我正在使用Visual Studio 2008.当我运行我的应用程序时,它不会抛出任何错误,但它不会在"c:\ program files \"中创建一个目录.那么有人可以帮我创建目录和exe文件吗?
这是我正在使用的代码:
char szAppPath[MAX_PATH];
char szFileName[MAX_PATH];
DWORD dwResult;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
dwResult = ExpandEnvironmentStrings( NULL, szAppPath, MAX_PATH); // "%ProgramFiles%"
// do same for NSim directory
strcat(szAppPath,"\\NSim");
hFind = FindFirstFile(szAppPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
//Directory Does't Exists create New
if(!CreateDirectory(szAppPath,NULL)) //Throw Error
{
MessageBox("Unable to Create N-SIM directory","NSim Installer");
return ;
}
}
else
{
//check if is directory or not
if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
MessageBox("Can't Create N-SIM directory\n Another …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序(在Windows7上运行,需要以管理方式运行),需要在Windows启动时自动运行,所以我像往常一样在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"下添加了一个注册表项,但是我的从谷歌搜索后,即使UAC对话框没有提交,应用程序也不会自动启动.我知道我可以使用任务调度程序来解决这个问题,但是今天有什么可以告诉我为什么"运行"注册表方式不起作用?为什么UAC对话框没有提交?如果你能帮助从microsoft找一篇文章来解释这个问题,那就更好了,非常感谢!
我通过按下按钮从我的应用程序中以管理员帐户启动触摸键盘,如下所示:
var progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
var keyboardPath = Path.Combine(progFiles, "TabTip.exe");
Process.Start(keyboardPath);
Run Code Online (Sandbox Code Playgroud)
但是,对于非管理员帐户,触摸键盘不会启动。
我尝试了各种技术(使用 ShellExecuteEx、CreateProcessWithLogonW、模拟等),但都没有成功。
是否有可能做到这一点?
我有一个 C# 程序,我希望其中的某些功能需要管理员密码。为了解决这个问题,我启动了应用程序的另一个实例作为提升的进程,并向其传递命令行参数,以便该进程知道它必须执行什么任务。
Process proc = new Process();
proc.StartInfo.Arguments = "PARAMETERS HERE");
proc.StartInfo.FileName = Application.ExecutablePath;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.Verb = "runas";
proc.Start();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我有一个小问题。我刚刚注意到启动新进程时弹出的 UAC 提示符不仅显示应用程序名称和路径,还显示传递给它的命令行参数。这样,用户可以看到正在传递的参数,并直接从run
命令或传递参数command prompt
。
有什么办法可以防止这种情况吗?或者提升正在运行的程序的更好方法?
我正在尝试用 C# 创建一些类似于 Linux 的 sudo 的东西。我找到了一种使用密码以其他用户身份运行该进程的方法,但我想在没有密码的情况下执行此操作。
另外,我的 C# 软件以管理员身份运行并且已通过 UAC。
我当前的代码:
static void CreateProcessAsUser(string name, string path, SecureString password)
{
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = path;
proc.StartInfo.UserName = name;
proc.StartInfo.Password = password;
proc.Start();
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
有什么方法可以使程序UAC提升永久性地跨越新实例.我有一个在UAC提升模式下运行的程序,需要在UAC提升模式下启动进程,但用户不会每次都在计算机上进行授权.也许在安装期间...但不是每次都安装.
嗯,我注意到在 Windows 7 上,有时即使你是管理员,你也不能做很多事情,可能是某种错误,我的应用程序我在启动程序之前检查用户是否是管理员,因为我的程序创建文件位于受保护的默认文件夹中,例如根文件夹 ( C: ),如果您不是 Windows 7 的管理员,则只能在那里创建文件夹。
因此,如果我右键单击我的应用程序并转到“以管理员身份运行”,它就可以正常工作。有没有办法让我的应用程序自动以管理员身份运行?我希望能够编写一行代码,例如:ActivateAdministrator();
并且完全可用于代码,因为我更改了属性,使用ifstream
.
我正在尝试制作一个基本检查程序来进行黑客攻击.黑客入侵代码,并需要确保禁用UAC.有没有一种特殊的方式我必须用Windows 8做到这一点?
************** Exception Text **************
System.UnauthorizedAccessException: Cannot write to the registry key.
at System.ThrowHelper.ThrowUnauthorizedAccessException(ExceptionResource resource)
at Microsoft.Win32.RegistryKey.EnsureWriteable()
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
at Basic_Checker.Form1.linkLabel5_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) in C:\Users\Jennifer\Documents\Visual Studio 2010\Projects\BasicChecker v1.1\BasicChecker\Form1.cs:line 386
at System.Windows.Forms.LinkLabel.OnLinkClicked(LinkLabelLinkClickedEventArgs e)
at System.Windows.Forms.LinkLabel.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Label.WndProc(Message& m)
at System.Windows.Forms.LinkLabel.WndProc(Message& msg)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded …
Run Code Online (Sandbox Code Playgroud) 如何在启用UAC的情况下获取受保护的写文件夹列表?需要此信息的过程是使用管理员权限(安装程序)启动的.
uac ×9
c# ×5
windows ×5
c++ ×3
windows-7 ×2
process ×1
visual-c++ ×1
windows-10 ×1
windows-8 ×1
winforms ×1