小编Geo*_*hev的帖子

Delphi - 如果是管理员,如何检查任何Windows用户?

我需要检查本地计算机上可用的帐户类型.

我已经找到了如何为当前登录用户执行此操作:

function IsWindowsAdmin: Boolean;
var
   hAccessToken: THandle;
   ptgGroups: PTokenGroups;
   dwInfoBufferSize: DWORD;
   psidAdministrators: PSID;
   g: Integer;
   bSuccess: BOOL;
begin
   Result:= False;
   bSuccess:= OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken);
   if not bSuccess then
   begin
     if GetLastError = ERROR_NO_TOKEN then
       bSuccess:= OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
   end;

   if bSuccess then
   begin
     GetMem(ptgGroups, 1024);
     bSuccess:= GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);
     CloseHandle(hAccessToken);
     if bSuccess then
     begin
       AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
                                SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
                                0, 0, 0, 0, 0, 0, psidAdministrators);
       for g:= 0 to ptgGroups.GroupCount - 1 do
         if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) …
Run Code Online (Sandbox Code Playgroud)

windows delphi winapi

9
推荐指数
1
解决办法
1156
查看次数

有没有办法使用 Python 的 gspread API 自动调整 Google 表格中的列?

有没有办法使用 Pyton 的 gspread API 在 Google Sheets 中操作行?自动调整会很棒,但手动更改大小也可以。

python google-drive-api gspread google-sheets-api

2
推荐指数
1
解决办法
1313
查看次数

在Delphi和PHP中使用"相同"方法加密时的结果不同

我试图在Delphi和PHP之间交换加密的消息.

从Delphi方面我从这里下载了DCPcrypt v2 Beta 3:

http://www.cityinthesky.co.uk/opensource/dcpcrypt/

对于加密我使用此功能:

function TForm1.Encrypt3DES(psData, psKey: string): string;
var
  Cipher: TDCP_3des;
begin
  Cipher:= TDCP_3des.Create(nil);
  Cipher.InitStr(psKey,TDCP_sha256);
  result:=Cipher.EncryptString(psData);
  Cipher.Burn;
  Cipher.Free;
end;
Run Code Online (Sandbox Code Playgroud)

我正在测试它:

ShowMessage(Encrypt3DES('test','SecretKeySecretKeySecret'));
Run Code Online (Sandbox Code Playgroud)

我得到的结果是Z74E0Q ==我可以使用另一个类似的delphi函数成功解密它:

function TForm1.Decrypt3DES(psData, psKey: string): string;
var
  Cipher: TDCP_3des;
begin
  Cipher:= TDCP_3des.Create(nil);
  Cipher.InitStr(psKey, TDCP_sha256);         
  result:=Cipher.DecryptString(psData);
  Cipher.Burn;
  Cipher.Free;
end;
Run Code Online (Sandbox Code Playgroud)

从PHP端我试过几个功能相同的字符串("测试")使用相同的密钥("SecretKeySecretKeySecret")加密,但结果是什么,我在Delphi中得到不同的.我再次成功解密PHP中具有类似功能的消息,但我需要在Delphi中解密消息.

这是我在PHP中所做的,我甚至试图散列键,因为我看到Delphi函数正在使用TDCP_sha256,但结果仍然不同.

$key = "SecretKeySecretKeySecret";

echo base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, 'test', 'ecb')).'<BR><BR>';

echo openssl_encrypt('test', 'des-ede3', $key).'<BR><BR>';

$key = hash('sha256', $key);
echo openssl_encrypt('test', 'des-ede3', $key).'<BR><BR>';
Run Code Online (Sandbox Code Playgroud)

这是结果:

Z05z5Bp4/VY =

L5qmk5nJOzs =

bm7yRdrMs5g =

我究竟做错了什么?BTW我正在使用Delphi 7和DCPcrypt是目前唯一能够让它运行的库.

php delphi delphi-7

1
推荐指数
1
解决办法
452
查看次数