2014-04-23:error: lpSidString = GetUserSid(hToken);%s在UNICODE的情况很特殊

1、应改为

	_tcscpy(lpSidString,GetUserSid(hToken));

2、

printf("last:%s,%s",lpSidString,GetUserSid(hToken));竟然显示S,S,只显示一个字符

将小写的s改为大写的S后,就能正常显示所有字符了。


LPTSTR lpSidString=(LPTSTR)HF_MemAlloc(sizeof(TCHAR)*(MAX_PATH+1));
lpSidString = NULL;
return lpSidString;

是错误的。

3、

LPTSTRlpSidString=(LPTSTR)HF_MemAlloc(sizeof(TCHAR)*(MAX_PATH+1));

if (lpSidString)
{
printf("1");
}

中的if判断的是什么?(结果会输出1)

4、貌似动态开辟内存后,只能使用strcpy给该内存空间赋值,其他的都不行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include "mainwindow.h" #include <QApplication> #include <windows.h> #include <wtsapi32.h> #pragma comment(lib, "Wtsapi32.lib") int main(int argc, char *argv[]) { QApplication a(argc, argv); HANDLE hToken = NULL; DWORD dwSessionId = WTSGetActiveConsoleSessionId(); if (!WTSQueryUserToken(dwSessionId, &hToken)) { QMessageBox::warning(nullptr, QStringLiteral("错误"), QStringLiteral("获取用户令牌失败!")); return -1; } HANDLE mutex = ::CreateMutex(Q_NULLPTR, true, (LPCWSTR)qApp->applicationName().toStdWString().c_str()); if (GetLastError() == ERROR_ALREADY_EXISTS) { QMessageBox warningBox(QMessageBox::Warning, QStringLiteral("警告"), QStringLiteral("程序[文本数据同步服务端]只能运行一个!")); warningBox.setButtonText(QMessageBox::Ok, QStringLiteral("确定")); warningBox.setStandardButtons(QMessageBox::Ok); warningBox.exec(); ::CloseHandle(mutex); return 0; } else { ::ReleaseMutex(mutex); } STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.lpDesktop = (LPWSTR)L"winsta0\\default"; PROCESS_INFORMATION pi; ZeroMemory(&pi, sizeof(pi)); if (!CreateProcessAsUser(hToken, NULL, (LPWSTR)qApp->applicationFilePath().toStdWString().data(), NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { QMessageBox::warning(nullptr, QStringLiteral("错误"), QStringLiteral("创建进程失败!")); CloseHandle(hToken); return -1; } CloseHandle(hToken); MainWindow w; w.show(); return a.exec(); } 以上QT C++代码会报出以下错误: D:\QtProject\DataServer\main.cpp:-1: error: undefined reference to `WTSQueryUserToken@8' collect2.exe:-1: error: error: ld returned 1 exit status 请修复后给我完整代码
最新发布
05-30

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值