#c #qt
#c #qt
Вопрос:
Я хочу записать файл на диск C в Windows, используя Qt c , что я пытаюсь
QFile file("C:/key.txt");
if (!file.exists())
{
file.open(QIODevice::WriteOnly | QIODevice::Text);
file.write("0");
file.close();
}
но на C ничего не было написано, я думаю, я должен предоставить ему права администратора, чтобы он мог записывать на диск C, но я искал и нашел QFile ::setpermissions
, но это тоже не решило проблему
, поэтому любая идея решить мою проблему, пожалуйста
, спасибо в Avdance
Комментарии:
1. Выполнили ли вы шаги, чтобы убедиться, что код внутри условия выполняется?
2. Вы должны проверить
open
write
, удалось ли и.3. да, функция выполнена, я попробовал ее D:/key.txt и это сработало, и файл был создан без проблем
4. да, конечно, проблема с разрешениями, как говорится в ответах.
5. Вы можете проверить логический успех на каждом шаге и получить код ошибки с помощью
file.error()
Ответ №1:
Для записи необходимо запустить приложение с правами администратора C:
. Для этого требуется обойти UAC. Для этого вставьте манифест:
QMAKE_LFLAGS = /MANIFESTUAC:"level='requireAdministrator' uiAccess='false'"
или вы можете настроить манифест своего приложения:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
Комментарии:
1. где я могу найти этот файл, пожалуйста
Ответ №2:
Для записи непосредственно на диск C: требуются права администратора. Либо измените папку, либо запустите приложение от имени администратора.