Форум программистов, компьютерный форум CyberForum.ru

Ошибка копирования файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где ошибка? http://www.cyberforum.ru/cpp-beginners/thread935527.html
Ребят,помогите найти ошибку... #include <iostream> using namespace std; class man { public: man() {
C++ Не видит переменную #include <iostream> using namespace std; int main() { int chislo; cin >> chislo; for (int i = 0; i < 100; i++); { if (i % 10 == 0) { http://www.cyberforum.ru/cpp-beginners/thread935516.html
В чём ошибка C++
Программа вылетает когда я пытаюсь по модулю найти. Объясните где я ошибся! // 2.cpp: определяет точку входа для консольного приложения. // //в одномерном массиве, состоящем из п вещественных элементов, вычислить: //1) сумму положительных элементов массива; //2) произведение элементов массива, расположенных между максимальным по модулю //и минимальным по модулю элементами. //Упорядочить...
C++ PE loader из памяти
Здравствуйте..Имеется такая проблема...Считываю exe файл побайтно в массив...Требуется создать новый exe файл, который бы находил у себя этот массив байт и запускал этот файл...Как я понимаю, требуется спроецировать данный набор байтов в память да так, чтобы не нарушить конструкцию PE...Подскажите в каком направлении начать исследования??!!!
C++ Классы. Задана программа.Нужно ее изменить за место переменных должны быть указатели http://www.cyberforum.ru/cpp-beginners/thread935478.html
Задана программа.Нужно ее изменить за место переменных должны быть указатели ии... #include <iostream> using namespace std; class base { int i; public: int proizv(int a1);
C++ Объясните, в чём разница int u = 6 int *p = &u или int *p p = &u В чём тут разница? Тема: Указатели. подробнее

Показать сообщение отдельно
Dragokas
Эксперт WindowsАвтор FAQ
14925 / 6528 / 792
Регистрация: 25.12.2011
Сообщений: 10,093
Записей в блоге: 15
09.08.2013, 10:27     Ошибка копирования файла
Не знаю, как в Win8, в Win7 по идее должно помочь затребование повышенных прав (должно отображаться диалоговое окно UAC) - в манифест прописать HighestAvaliable. И получить права SE_DEBUG:

SE_DEBUG
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>     /* cout */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* system, NULL, EXIT_FAILURE */
#include <Windows.h>
 
// Declaring Prototypes
BOOL SetPrivilege(HANDLE, LPCTSTR, BOOL) ;
BOOL EnableDebugPrivilages(); 
 
int main(int argc, char *argv[])
{
    EnableDebugPrivilages();
    system("pause");
}
 
BOOL EnableDebugPrivilages()
{
    HANDLE hToken;
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken );
    BOOL ret = SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
    CloseHandle(hToken);
    return ret;
}
 
BOOL SetPrivilege(
    HANDLE hToken,          // access token handle
    LPCTSTR lpszPrivilege,  // name of privilege to enable/disable
    BOOL bEnablePrivilege   // to enable or disable privilege
    ) 
{
    TOKEN_PRIVILEGES tp;
    LUID luid;
 
    if ( !LookupPrivilegeValue( 
        NULL,            // lookup privilege on local system
        lpszPrivilege,   // privilege to lookup 
        &luid ) )        // receives LUID of privilege
    {
        printf("LookupPrivilegeValue error: %u\n", GetLastError() ); 
        return FALSE; 
    }
 
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    if (bEnablePrivilege)
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    else
        tp.Privileges[0].Attributes = 0;
 
    // Enable the privilege or disable all privileges.
    if ( !AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD) NULL) )
    {
        std::cerr << "AdjustTokenPrivileges error: " << GetLastError() << "\n";
        return FALSE;
    }
 
    if ( GetLastError() == ERROR_NOT_ALL_ASSIGNED )
    {
        std::cerr << "SE_DEBUG failed.\n";
        return FALSE;
    }
 
    std::cerr << "SE_DEBUG granted.\n";
    return TRUE;
}


Про манифест сами найдете. Или можете временно пробовать запускать ПКМ "От имени администратора".

А вообще нужно смотреть в свойства этого файла - на вкладке "Безопасность". Какой группе доступны права "чтение/запись". От этого и отталкиваться.

Если там вообще указаны Local System, тогда придется через службу, или как вариант через psexec:

Bash
1
psexec -i -s app.exe
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru