CPP自副本访问被拒绝
Cpp self copy access denied
因此,我尝试使用code::blocks
在C 中创建一个自我复制。我已经编写了代码,在本地机器上它可以完美地发挥作用。将其加载到Windows 7虚拟机和其他2台PC上后,我意识到它不起作用。它提出了错误
"无法复制文件,访问拒绝"
我的PC可能具有不同的权限集,我假设这就是为什么它在我的而不是其他方面工作的原因。这是代码的部分:
ifstream check( "C:\newfile.exe" );
if( !check.is_open() )
{
char bufferf[MAX_PATH];
GetModuleFileName( NULL, bufferf, MAX_PATH );
std::stringstream str;
str << "copy " << bufferf << " C:\newfile.exe";
system( str.str().c_str() );
system( "start c:\newfile.exe" );
cout << __argv[0] << endl;
return 1;
}
else
{
return 0;
}
请记住,我对C ,长期Java,PHP和C#开发人员非常陌生,但我认为是时候学习较低级别的语言了。如果您对使它成为一个更有效的功能有任何建议,请告诉我。显示您可以的任何代码,因为我还不100%熟悉所有库。长话短说,我想将当前的EXE复制到CDRIVE,运行复制文件并关闭原件。这是我尝试的另一种方式
ifstream check( "C:\newFile.exe" );
if( !check.is_open() )
{
char bufferf[MAX_PATH];
GetModuleFileName( NULL, bufferf, MAX_PATH );
char * original_file = bufferf;
char * new_file = ( char * )"c:\newFile.exe";
( void ) CopyFile( ( LPCTSTR )original_file, ( LPCTSTR )new_file, FALSE );
system( "start c:\newFile.exe" );
cout << __argv[0];
return 1;
}
else
{
return 0;
}
仍然没有成功。但是,两者在我的开发机器上(从我看到的)上完美无缺,我听说人们说您无法在Windows中复制运行EXE文件,但这不是真的,我觉得这是一个许可问题,但我可能错了。
欢迎任何有关自复制的技巧,我对新方法开放。
请知道,Windows Vista和Windows 7启用了UAC,这不允许您"写入"某些文件夹。您可能必须在管理员模式下运行该程序,或者完全禁用程序以使程序将/创建文件从一个位置复制/创建文件到受保护的特殊文件夹。
请求用户允许以管理模式运行程序,必须将清单文件定义并链接到您的应用程序:这告诉您如何执行。
相关文章:
- 访问被拒绝后,c++中的故障保护代码
- 删除目录函数访问被拒绝
- 为什么 Windows 拒绝访问某些进程的名称?
- 我在执行任何程序时被拒绝在 devcpp 中访问
- Windows C++:文件夹移动访问被拒绝错误
- AWS AMI 中的 Windows DPAPI 失败,访问被拒绝
- C++ 17 文件系统copy_file访问被拒绝
- mysql c ++连接器异常:用户"root"@'localhost'的访问被拒绝(使用密码:NO)&&MySQL服务器已消失
- 如何修复 CopyFile() 错误 5 - 访问被拒绝错误
- 任务计划程序:设置运行级别时拒绝访问
- 清除同一属性后,设置属性时拒绝访问
- 创建注册表密钥 - 拒绝访问
- 64位Windows API结构对齐导致命名管道上出现“拒绝访问”错误
- RegLoadKey给出错误代码5(拒绝访问)
- 在正常应用程序中,当信号量第一次由服务创建时,它被拒绝访问
- 当发生错误(拒绝访问)时调用Curl-headerfunction和write函数
- 在EnumProcessModules上拒绝访问- c++
- 无法启动程序:拒绝访问
- 拒绝访问nt权限本地服务
- OpenFileMapping在某些前任中被拒绝访问